1919package org .apache .gora .hive .store ;
2020
2121import static org .junit .Assert .assertTrue ;
22+ import static org .junit .Assert .fail ;
2223
2324import java .nio .ByteBuffer ;
2425import java .nio .charset .Charset ;
2526import java .util .ArrayList ;
2627import java .util .Set ;
2728import org .apache .avro .util .Utf8 ;
29+ import org .apache .gora .examples .WebPageDataCreator ;
2830import org .apache .gora .examples .generated .Employee ;
2931import org .apache .gora .examples .generated .Metadata ;
3032import org .apache .gora .examples .generated .WebPage ;
3436import org .apache .gora .store .DataStoreTestUtil ;
3537import org .apache .gora .util .GoraException ;
3638import org .apache .gora .util .StringUtils ;
39+ import org .apache .metamodel .query .parser .QueryParserException ;
3740import org .junit .Ignore ;
3841import org .junit .Test ;
3942
@@ -56,6 +59,25 @@ public void assertSchemaExists(String schemaName) throws Exception {
5659 assertTrue (employeeStore .schemaExists ());
5760 }
5861
62+ private void awaitWebPageSchema (String key ) throws Exception {
63+ for (int attempt = 0 ; attempt < 100 ; attempt ++) {
64+ webPageStore .flush ();
65+ if (!webPageStore .schemaExists ()) {
66+ Thread .sleep (100L );
67+ continue ;
68+ }
69+ if (key == null ) return ;
70+ try {
71+ webPageStore .get (key , new String [] {"url" });
72+ return ;
73+ } catch (QueryParserException e ) {
74+ webPageStore .close ();
75+ webPageStore = testDriver .createDataStore (String .class , WebPage .class );
76+ }
77+ }
78+ fail ("Hive web page schema or record was not visible" );
79+ }
80+
5981 @ Override
6082 public void assertPut (Employee employee ) throws GoraException {
6183 employeeStore .put (employee .getSsn ().toString (), employee );
@@ -122,6 +144,32 @@ public void testGetNested() throws Exception {
122144 DataStoreTestUtil .assertEqualWebPageObjects (webpage , after .getWebpage ());
123145 }
124146
147+ private void testGetWebPage (String [] fields ) throws Exception {
148+ WebPageDataCreator .createWebPageData (webPageStore );
149+ awaitWebPageSchema (WebPageDataCreator .URLS [0 ]);
150+ for (int i = 0 ; i < WebPageDataCreator .URLS .length ; i ++) {
151+ WebPage page = webPageStore .get (WebPageDataCreator .URLS [i ], fields );
152+ DataStoreTestUtil .assertWebPage (page , i );
153+ }
154+ }
155+
156+ @ Override
157+ public void testGetWebPage () throws Exception {
158+ testGetWebPage (((HiveStore <String , WebPage >) webPageStore ).getFields ());
159+ }
160+
161+ @ Override
162+ public void testGetWebPageDefaultFields () throws Exception {
163+ testGetWebPage (null );
164+ }
165+
166+ @ Override
167+ public void testGetPartitions () throws Exception {
168+ WebPageDataCreator .createWebPageData (webPageStore );
169+ awaitWebPageSchema (WebPageDataCreator .URLS [0 ]);
170+ DataStoreTestUtil .testGetPartitions (webPageStore , webPageStore .newQuery ());
171+ }
172+
125173 @ Ignore ("Hive test server doesn't support deleting and updating entries" )
126174 @ Override
127175 public void testExists () throws Exception {
0 commit comments