Skip to content

Commit c89f2a7

Browse files
shollymankurtisvg
authored andcommitted
vision: address flakes due to collisions. (#1458)
* vision: address flakes due to collisions. * beta: convert batch future to actually wait for output properly. * explicit imports * additional explicit import
1 parent 30cb0b8 commit c89f2a7

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

vision/beta/cloud-client/src/main/java/com/example/vision/AsyncBatchAnnotateImagesGcs.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package com.example.vision;
1818

1919
// [START vision_async_batch_annotate_images_beta]
20-
import com.google.api.core.ApiFuture;
20+
import com.google.api.gax.longrunning.OperationFuture;
2121
import com.google.api.gax.paging.Page;
2222
import com.google.cloud.storage.Blob;
2323
import com.google.cloud.storage.Bucket;
@@ -26,17 +26,17 @@
2626
import com.google.cloud.storage.StorageOptions;
2727
import com.google.cloud.vision.v1p4beta1.AnnotateImageRequest;
2828
import com.google.cloud.vision.v1p4beta1.AsyncBatchAnnotateImagesRequest;
29-
import com.google.cloud.vision.v1p4beta1.BatchAnnotateImagesResponse.Builder;
29+
import com.google.cloud.vision.v1p4beta1.AsyncBatchAnnotateImagesResponse;
3030
import com.google.cloud.vision.v1p4beta1.BatchAnnotateImagesResponse;
31+
import com.google.cloud.vision.v1p4beta1.BatchAnnotateImagesResponse.Builder;
3132
import com.google.cloud.vision.v1p4beta1.Feature;
3233
import com.google.cloud.vision.v1p4beta1.Feature.Type;
3334
import com.google.cloud.vision.v1p4beta1.GcsDestination;
3435
import com.google.cloud.vision.v1p4beta1.Image;
3536
import com.google.cloud.vision.v1p4beta1.ImageAnnotatorClient;
3637
import com.google.cloud.vision.v1p4beta1.ImageSource;
38+
import com.google.cloud.vision.v1p4beta1.OperationMetadata;
3739
import com.google.cloud.vision.v1p4beta1.OutputConfig;
38-
39-
import com.google.longrunning.Operation;
4040
import com.google.protobuf.util.JsonFormat;
4141
import java.util.ArrayList;
4242
import java.util.List;
@@ -51,7 +51,6 @@ public static void asyncBatchAnnotateImagesGcs(String gcsSourcePath, String gcsD
5151
throws Exception {
5252
// String gcsSourcePath = "gs://YOUR_BUCKET_ID/path_to_your_data";
5353
// String gcsDestinationPath = "gs://YOUR_BUCKET_ID/path_to_store_annotation";
54-
5554
try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
5655
List<AnnotateImageRequest> requests = new ArrayList<>();
5756

@@ -87,13 +86,14 @@ public static void asyncBatchAnnotateImagesGcs(String gcsSourcePath, String gcsD
8786
.setOutputConfig(outputConfig)
8887
.build();
8988

90-
ApiFuture<Operation> future = client.asyncBatchAnnotateImagesCallable().futureCall(request);
91-
// Wait for the request to finish. (The result is not used, since the API saves the result to
92-
// the specified location on GCS.)
93-
Operation response = future.get(180, TimeUnit.SECONDS);
9489

90+
OperationFuture<AsyncBatchAnnotateImagesResponse, OperationMetadata> response =
91+
client.asyncBatchAnnotateImagesAsync(request);
9592
System.out.println("Waiting for the operation to finish.");
9693

94+
// we're not processing the response, since we'll be reading the output from GCS.
95+
response.get(180, TimeUnit.SECONDS);
96+
9797
// Once the request has completed and the output has been
9898
// written to GCS, we can list all the output files.
9999
Storage storage = StorageOptions.getDefaultInstance().getService();

vision/beta/cloud-client/src/test/java/com/example/vision/DetectIT.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.ByteArrayOutputStream;
2222
import java.io.IOException;
2323
import java.io.PrintStream;
24+
import java.util.UUID;
2425

2526
import org.junit.After;
2627
import org.junit.Before;
@@ -33,9 +34,9 @@
3334
@SuppressWarnings("checkstyle:abbreviationaswordinname")
3435
public class DetectIT {
3536
private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");
36-
// private static final String BUCKET = PROJECT_ID;
3737
private static final String BUCKET = "java-docs-samples-testing";
38-
private static final String OUTPUT_PREFIX = "OCR_PDF_TEST_OUTPUT";
38+
private static final String OUTPUT_BUCKET = PROJECT_ID;
39+
private static final String OUTPUT_PREFIX = "OUTPUT_VISION_BETA_" + UUID.randomUUID().toString();
3940
private ByteArrayOutputStream bout;
4041
private PrintStream out;
4142
private Detect app;
@@ -125,7 +126,7 @@ public void testAsyncBatchAnnotateImagesGcs() throws Exception {
125126
// Act
126127
AsyncBatchAnnotateImagesGcs.asyncBatchAnnotateImagesGcs(
127128
"gs://cloud-samples-data/vision/label/wakeupcat.jpg",
128-
"gs://" + BUCKET + "/" + OUTPUT_PREFIX + "/");
129+
"gs://" + OUTPUT_BUCKET + "/" + OUTPUT_PREFIX + "/");
129130

130131
// Assert
131132
String got = bout.toString();

vision/cloud-client/src/test/java/com/example/vision/DetectIT.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.io.ByteArrayOutputStream;
2727
import java.io.IOException;
2828
import java.io.PrintStream;
29+
import java.util.UUID;
2930

3031
import org.junit.After;
3132
import org.junit.Before;
@@ -42,7 +43,7 @@ public class DetectIT {
4243
private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");
4344
private static final String ASSET_BUCKET = "cloud-samples-data";
4445
private static final String OUTPUT_BUCKET = PROJECT_ID;
45-
private static final String OUTPUT_PREFIX = "OCR_PDF_TEST_OUTPUT";
46+
private static final String OUTPUT_PREFIX = "OCR_PDF_TEST_OUTPUT_" + UUID.randomUUID().toString();
4647

4748
@Before
4849
public void setUp() throws IOException {
@@ -363,13 +364,13 @@ public void testDetectDocumentsGcs() throws Exception {
363364

364365
// Assert
365366
String got = bout.toString();
367+
366368
assertThat(got).contains("OIL, GAS AND MINERAL LEASE");
367369

368370
Storage storage = StorageOptions.getDefaultInstance().getService();
369371

370372
Page<Blob> blobs = storage.list(OUTPUT_BUCKET, BlobListOption.currentDirectory(),
371373
BlobListOption.prefix(OUTPUT_PREFIX + "/"));
372-
373374
for (Blob blob : blobs.iterateAll()) {
374375
blob.delete();
375376
}
@@ -397,4 +398,4 @@ public void testDetectLocalizedObjectsGcs() throws Exception {
397398
String got = bout.toString().toLowerCase();
398399
assertThat(got).contains("dog");
399400
}
400-
}
401+
}

0 commit comments

Comments
 (0)