package org.nlpcn.es4sql; import static org.nlpcn.es4sql.TestsConstants.TEST_INDEX; import java.io.IOException; import java.sql.SQLFeatureNotSupportedException; import java.util.Set; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.junit.Assert; import org.junit.Test; import org.nlpcn.es4sql.exception.SqlParseException; import org.nlpcn.es4sql.query.SqlElasticSearchRequestBuilder; public class SourceFieldTest { @Test public void includeTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException { SearchHits response = query(String.format("SELECT include('*name','*ge'),include('b*'),include('*ddre*'),include('gender') FROM %s/account LIMIT 1000", TEST_INDEX)); for (SearchHit hit : response.getHits()) { Set<String> keySet = hit.getSource().keySet(); for (String field : keySet) { Assert.assertTrue(field.endsWith("name") || field.endsWith("ge") || field.startsWith("b") || field.contains("ddre") || field.equals("gender")); } } } @Test public void excludeTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException { SearchHits response = query(String.format("SELECT exclude('*name','*ge'),exclude('b*'),exclude('*ddre*'),exclude('gender') FROM %s/account LIMIT 1000", TEST_INDEX)); for (SearchHit hit : response.getHits()) { Set<String> keySet = hit.getSource().keySet(); for (String field : keySet) { Assert.assertFalse(field.endsWith("name") || field.endsWith("ge") || field.startsWith("b") || field.contains("ddre") || field.equals("gender")); } } } @Test public void allTest() throws IOException, SqlParseException, SQLFeatureNotSupportedException { SearchHits response = query(String.format("SELECT exclude('*name','*ge'),include('b*'),exclude('*ddre*'),include('gender') FROM %s/account LIMIT 1000", TEST_INDEX)); for (SearchHit hit : response.getHits()) { Set<String> keySet = hit.getSource().keySet(); for (String field : keySet) { Assert.assertFalse(field.endsWith("name") || field.endsWith("ge") || field.contains("ddre") ); Assert.assertTrue(field.startsWith("b") || field.equals("gender")); } } } private SearchHits query(String query) throws SqlParseException, SQLFeatureNotSupportedException, SQLFeatureNotSupportedException { SearchDao searchDao = MainTestSuite.getSearchDao(); SqlElasticSearchRequestBuilder select = (SqlElasticSearchRequestBuilder) searchDao.explain(query).explain(); return ((SearchResponse) select.get()).getHits(); } }