Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 4 additions & 25 deletions google-cloud-clients/google-cloud-firestore/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -108,32 +108,11 @@
<classifier>testlib</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-conformance-tests</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>add-test-resource</id>
<phase>generate-test-resources</phase>
<goals>
<goal>add-test-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/test/proto</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

<reporting>
<plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package com.google.cloud.firestore;

import com.google.cloud.Timestamp;
import com.google.cloud.firestore.conformance.TestDefinition;
import com.google.cloud.conformance.firestore.v1.TestDefinition;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.google.cloud.firestore;

import static com.google.cloud.conformance.ConformanceTestLocator.newMatchPattern;
import static com.google.cloud.firestore.ConformanceConversions.convertInput;
import static com.google.cloud.firestore.ConformanceConversions.convertPath;
import static com.google.cloud.firestore.ConformanceConversions.convertPaths;
Expand All @@ -35,23 +36,25 @@
import com.google.api.gax.rpc.ServerStreamingCallable;
import com.google.api.gax.rpc.UnaryCallable;
import com.google.cloud.Timestamp;
import com.google.cloud.conformance.ConformanceTestLocator;
import com.google.cloud.conformance.ConformanceTestLocator.MatchPattern;
import com.google.cloud.conformance.firestore.v1.TestDefinition;
import com.google.cloud.conformance.firestore.v1.TestDefinition.Clause;
import com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest;
import com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor;
import com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest;
import com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange;
import com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind;
import com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot;
import com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest;
import com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest;
import com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy;
import com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest;
import com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot;
import com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest;
import com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest;
import com.google.cloud.conformance.firestore.v1.TestDefinition.Where;
import com.google.cloud.firestore.Query.Direction;
import com.google.cloud.firestore.conformance.TestDefinition;
import com.google.cloud.firestore.conformance.TestDefinition.Clause;
import com.google.cloud.firestore.conformance.TestDefinition.CreateTest;
import com.google.cloud.firestore.conformance.TestDefinition.Cursor;
import com.google.cloud.firestore.conformance.TestDefinition.DeleteTest;
import com.google.cloud.firestore.conformance.TestDefinition.DocChange;
import com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind;
import com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot;
import com.google.cloud.firestore.conformance.TestDefinition.GetTest;
import com.google.cloud.firestore.conformance.TestDefinition.ListenTest;
import com.google.cloud.firestore.conformance.TestDefinition.OrderBy;
import com.google.cloud.firestore.conformance.TestDefinition.SetTest;
import com.google.cloud.firestore.conformance.TestDefinition.Snapshot;
import com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest;
import com.google.cloud.firestore.conformance.TestDefinition.UpdateTest;
import com.google.cloud.firestore.conformance.TestDefinition.Where;
import com.google.cloud.firestore.spi.v1.FirestoreRpc;
import com.google.common.base.Preconditions;
import com.google.firestore.v1.BatchGetDocumentsRequest;
Expand All @@ -63,8 +66,11 @@
import com.google.firestore.v1.Value;
import com.google.protobuf.AbstractMessage;
import com.google.protobuf.Message;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
Expand Down Expand Up @@ -94,9 +100,6 @@
@RunWith(AllTests.class)
public class ConformanceTest {

private static final String TEST_FILE =
"/com/google/cloud/firestore/conformance/test-suite.binproto";

/** Excluded tests by test description. */
private static final Set<String> excludedTests = Collections.emptySet();

Expand All @@ -109,16 +112,16 @@ public class ConformanceTest {
public ConformanceTest() {}

/** Generate the test suite based on the tests defined in test_data.binprotos. */
public static TestSuite suite() throws IOException {
public static TestSuite suite() throws Exception {
TestSuite suite = new TestSuite();
final TestDefinition.TestSuite testSuite = parseTests();
final TestDefinition.TestFile testSuite = parseTests();
for (Test test : initTests(testSuite)) {
suite.addTest(test);
}
return suite;
}

private static List<Test> initTests(TestDefinition.TestSuite testSuite) {
private static List<Test> initTests(TestDefinition.TestFile testSuite) {
final List<Test> tests = new ArrayList<>();
for (final TestDefinition.Test testDefinition : testSuite.getTestsList()) {
if (!includedTests.isEmpty() && !includedTests.contains(testDefinition.getDescription())
Expand All @@ -134,9 +137,24 @@ private static List<Test> initTests(TestDefinition.TestSuite testSuite) {
}

/** Reads the test definition from the Proto file. */
private static TestDefinition.TestSuite parseTests() throws IOException {
final InputStream is = ConformanceTest.class.getResourceAsStream(TEST_FILE);
return TestDefinition.TestSuite.parseFrom(is);
private static TestDefinition.TestFile parseTests() throws IOException, URISyntaxException {
final ClassLoader cl = Thread.currentThread().getContextClassLoader();
final MatchPattern matchPattern =
newMatchPattern("com/google/cloud/conformance/firestore/v1", ".json");
final List<String> jsonResources =
ConformanceTestLocator.findAllResourcePaths(matchPattern, cl);

final TestDefinition.TestFile.Builder suite = TestDefinition.TestFile.newBuilder();

for (String jsonResource : jsonResources) {
final InputStream is = cl.getResourceAsStream(jsonResource);
Assert.assertNotNull(String.format("Unable to load test definition: '%s'", jsonResource), is);
final InputStreamReader reader = new InputStreamReader(is);
final TestDefinition.TestFile.Builder testBuilder = TestDefinition.TestFile.newBuilder();
JsonFormat.parser().merge(reader, testBuilder);
suite.addAllTests(testBuilder.build().getTestsList());
}
return suite.build();
}

/** Returns the test case for the provided test definition. */
Expand Down
Loading