Skip to content

Commit 05767ee

Browse files
authored
Merge pull request #81 from authzed/changes-to-generator-options
generate less verbose inner classes
2 parents d2a0e6c + a8ae90a commit 05767ee

2 files changed

Lines changed: 93 additions & 22 deletions

File tree

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ java {
7878
javadoc { options.addStringOption('Xdoclint:none', '-quiet') }
7979

8080
def grpcVersion = "1.63.0"
81-
def protocVersion = "3.17.3"
82-
def authzedProtoCommit = "v1.30.0"
81+
def protocVersion = "3.25.3"
82+
def authzedProtoCommit = "db4a5c7460f1926142f9c3627077a5798959d1e5"
8383
def bufDir = "${buildDir}/buf"
8484
def protocPlatformTag = project.findProperty('protoc_platform') ? ":${protoc_platform}" : ""
8585

src/intTest/java/V1ClientTest.java

Lines changed: 91 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import static com.authzed.api.v1.CheckDebugTrace.Permissionship.PERMISSIONSHIP_HAS_PERMISSION;
12
import static org.junit.Assert.assertEquals;
23
import static org.junit.Assert.assertNotNull;
34
import static org.junit.Assert.assertTrue;
@@ -6,30 +7,16 @@
67
import java.util.Iterator;
78
import java.util.Random;
89
import java.util.Set;
10+
import java.util.concurrent.CountDownLatch;
911

12+
import com.authzed.api.v1.*;
1013
import com.authzed.grpcutil.BearerToken;
1114

15+
import io.grpc.stub.StreamObserver;
1216
import org.junit.Test;
1317

1418
import io.grpc.ManagedChannel;
1519
import io.grpc.ManagedChannelBuilder;
16-
import com.authzed.api.v1.PermissionsServiceGrpc;
17-
import com.authzed.api.v1.SchemaServiceGrpc;
18-
import com.authzed.api.v1.Core.ObjectReference;
19-
import com.authzed.api.v1.Core.Relationship;
20-
import com.authzed.api.v1.Core.RelationshipUpdate;
21-
import com.authzed.api.v1.Core.SubjectReference;
22-
import com.authzed.api.v1.Core.ZedToken;
23-
import com.authzed.api.v1.PermissionService;
24-
import com.authzed.api.v1.PermissionService.CheckPermissionRequest;
25-
import com.authzed.api.v1.PermissionService.CheckPermissionResponse;
26-
import com.authzed.api.v1.PermissionService.CheckPermissionResponse.Permissionship;
27-
import com.authzed.api.v1.SchemaServiceOuterClass.ReadSchemaRequest;
28-
import com.authzed.api.v1.SchemaServiceOuterClass.ReadSchemaResponse;
29-
import com.authzed.api.v1.SchemaServiceOuterClass.WriteSchemaRequest;
30-
import com.authzed.api.v1.PermissionService.Consistency;
31-
import com.authzed.api.v1.PermissionService.WriteRelationshipsRequest;
32-
import com.authzed.api.v1.PermissionService.WriteRelationshipsResponse;
3320

3421
public class V1ClientTest {
3522
private static final String target = "localhost:50051";
@@ -60,6 +47,9 @@ public void testSchemaService() {
6047
ReadSchemaResponse readResponse = schemaService.readSchema(readRequest);
6148
assertTrue(readResponse.getSchemaText().indexOf("test/article") > 0);
6249
}
50+
51+
// For an example with flow control, see
52+
// https://github.com/grpc/grpc-java/blob/9071c1ad7c842f4e73b6ae95b71f11c517b177a4/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlClient.java
6353
@Test
6454
public void testCheckPermission() {
6555
// Initialize services
@@ -103,7 +93,7 @@ public void testCheckPermission() {
10393
.build();
10494

10595
CheckPermissionResponse checkResponse = permissionsService.checkPermission(checkRequest);
106-
assertEquals(Permissionship.PERMISSIONSHIP_HAS_PERMISSION, checkResponse.getPermissionship());
96+
assertEquals(CheckPermissionResponse.Permissionship.PERMISSIONSHIP_HAS_PERMISSION, checkResponse.getPermissionship());
10797
}
10898

10999
@Test
@@ -127,7 +117,7 @@ public void testLookupResources() {
127117
ZedToken zedToken = ZedToken.newBuilder()
128118
.setToken(tokenVal)
129119
.build();
130-
PermissionService.LookupResourcesRequest lookupResourcesRequest = PermissionService.LookupResourcesRequest.newBuilder()
120+
LookupResourcesRequest lookupResourcesRequest = LookupResourcesRequest.newBuilder()
131121
.setConsistency(
132122
Consistency.newBuilder()
133123
.setAtLeastAsFresh(zedToken)
@@ -144,7 +134,7 @@ public void testLookupResources() {
144134
.setPermission("can_comment")
145135
.build();
146136

147-
Iterator<PermissionService.LookupResourcesResponse> resp = permissionsService.lookupResources(lookupResourcesRequest);
137+
Iterator<LookupResourcesResponse> resp = permissionsService.lookupResources(lookupResourcesRequest);
148138
Set<String> resources = new HashSet<>();
149139
resp.forEachRemaining(lookupResourcesResponse -> {
150140
resources.add(lookupResourcesResponse.getResourceObjectId());
@@ -186,6 +176,87 @@ private static String writeRelationship(PermissionsServiceGrpc.PermissionsServic
186176
return relResponse.getWrittenAt().getToken();
187177
}
188178

179+
180+
class BulkImportObserver implements StreamObserver<BulkImportRelationshipsResponse> {
181+
final CountDownLatch done = new CountDownLatch(1);
182+
private long loaded;
183+
184+
@Override
185+
public void onNext(BulkImportRelationshipsResponse resp) {
186+
loaded += resp.getNumLoaded();
187+
}
188+
189+
@Override
190+
public void onError(Throwable throwable) {
191+
// TODO need to capture error so that blocking callsite is able to access it
192+
System.out.println("onError");
193+
done.countDown();
194+
}
195+
196+
@Override
197+
public void onCompleted() {
198+
System.out.println("onCompleted");
199+
done.countDown();
200+
}
201+
202+
public void await() throws InterruptedException {
203+
done.await();
204+
}
205+
206+
public long loaded() {
207+
return loaded;
208+
}
209+
};
210+
211+
@Test
212+
public void testBulkImport() {
213+
214+
ManagedChannel channel = ManagedChannelBuilder.forTarget(target).usePlaintext().build();
215+
String token = generateToken();
216+
ExperimentalServiceGrpc.ExperimentalServiceStub experimentalService = ExperimentalServiceGrpc.
217+
newStub(channel)
218+
.withCallCredentials(new BearerToken(token));
219+
220+
BulkImportObserver responseObserver = new BulkImportObserver();
221+
writeTestSchema(token, channel);
222+
io.grpc.stub.StreamObserver<com.authzed.api.v1.BulkImportRelationshipsRequest>
223+
observer = experimentalService.bulkImportRelationships(responseObserver);
224+
225+
for (int i = 0; i < 10; i++) {
226+
BulkImportRelationshipsRequest req = BulkImportRelationshipsRequest.newBuilder()
227+
.addRelationships(relationship("test/article", "java_test_" + i, "author", "test/user", "george")).build();
228+
observer.onNext(req);
229+
}
230+
observer.onCompleted();
231+
232+
try {
233+
responseObserver.await();
234+
} catch (InterruptedException e) {
235+
throw new RuntimeException(e);
236+
}
237+
238+
assertEquals(10, responseObserver.loaded());
239+
}
240+
241+
private static Relationship relationship(String resourceType, String resourceID, String relation, String subjectType, String subjectID) {
242+
return Relationship.newBuilder()
243+
.setResource(
244+
ObjectReference.newBuilder()
245+
.setObjectType(resourceType)
246+
.setObjectId(resourceID)
247+
.build())
248+
.setRelation(relation)
249+
.setSubject(
250+
SubjectReference.newBuilder()
251+
.setObject(
252+
ObjectReference.newBuilder()
253+
.setObjectType(subjectType)
254+
.setObjectId(subjectID)
255+
.build())
256+
.build())
257+
.build();
258+
}
259+
189260
private static SchemaServiceGrpc.SchemaServiceBlockingStub writeTestSchema(String token, ManagedChannel channel) {
190261
SchemaServiceGrpc.SchemaServiceBlockingStub schemaService = SchemaServiceGrpc.newBlockingStub(channel)
191262
.withCallCredentials(new BearerToken(token));

0 commit comments

Comments
 (0)