Skip to content

Commit ef3e835

Browse files
test: stabilize get-webpage cases in TestHiveStore
1 parent cc01c18 commit ef3e835

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

gora-hive/src/test/java/org/apache/gora/hive/store/TestHiveStore.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@
1919
package org.apache.gora.hive.store;
2020

2121
import static org.junit.Assert.assertTrue;
22+
import static org.junit.Assert.fail;
2223

2324
import java.nio.ByteBuffer;
2425
import java.nio.charset.Charset;
2526
import java.util.ArrayList;
2627
import java.util.Set;
2728
import org.apache.avro.util.Utf8;
29+
import org.apache.gora.examples.WebPageDataCreator;
2830
import org.apache.gora.examples.generated.Employee;
2931
import org.apache.gora.examples.generated.Metadata;
3032
import org.apache.gora.examples.generated.WebPage;
@@ -34,6 +36,7 @@
3436
import org.apache.gora.store.DataStoreTestUtil;
3537
import org.apache.gora.util.GoraException;
3638
import org.apache.gora.util.StringUtils;
39+
import org.apache.metamodel.query.parser.QueryParserException;
3740
import org.junit.Ignore;
3841
import 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

Comments
 (0)