From df77f8223943a305b35bb4172b433424a3ddf2c2 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Mon, 24 Jun 2019 16:42:28 -0600 Subject: [PATCH 1/4] Rework the tests to remove flakiness (hopefully) --- .../dialogflow/KnowledgeBaseManagementIT.java | 64 +++++++++++-------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java b/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java index 180678dcea5..c5f3dd7c6a1 100644 --- a/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java +++ b/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java @@ -21,13 +21,14 @@ import com.google.cloud.dialogflow.v2beta1.DeleteDocumentRequest; import com.google.cloud.dialogflow.v2beta1.Document; +import com.google.cloud.dialogflow.v2beta1.DocumentName; import com.google.cloud.dialogflow.v2beta1.DocumentsClient; import com.google.cloud.dialogflow.v2beta1.KnowledgeAnswers; import com.google.cloud.dialogflow.v2beta1.KnowledgeAnswers.Answer; import com.google.cloud.dialogflow.v2beta1.KnowledgeBase; +import com.google.cloud.dialogflow.v2beta1.KnowledgeBaseName; import com.google.cloud.dialogflow.v2beta1.KnowledgeBasesClient; import com.google.cloud.dialogflow.v2beta1.ProjectName; - import com.google.common.collect.ImmutableList; import java.io.ByteArrayOutputStream; import java.io.PrintStream; @@ -48,6 +49,8 @@ public class KnowledgeBaseManagementIT { private static String PROJECT_ID = System.getenv().get("GOOGLE_CLOUD_PROJECT"); + private static String TEST_KNOWLEDGE_BASE_ID = "NjYxNjYwMTQ5MTIxMTgxMjg2NA"; + private static String TEST_DOCUMENT_ID = "MTIzOTcyMjY2OTk2Mzk0ODg1MTI"; private static String SESSION_ID = "fake_session_for_testing"; private static String LANGUAGE_CODE = "en-US"; private static String KNOWLEDGE_BASE_NAME = "fake_knowledge_base_name"; @@ -71,13 +74,19 @@ public void tearDown() throws Exception { ProjectName projectName = ProjectName.of(PROJECT_ID); for (KnowledgeBase knowledgeBase : knowledgeBasesClient.listKnowledgeBases(projectName).iterateAll()) { - // Delete any documents in the knowledge base. - for (Document document : documentsClient.listDocuments( - knowledgeBase.getName()).iterateAll()) { - documentsClient.deleteDocumentCallable().call( - DeleteDocumentRequest.newBuilder().setName(document.getName()).build()); + // DO NOT DELETE THE TEST KNOWLEDGE BASE + if (!knowledgeBase.getName().contains(TEST_KNOWLEDGE_BASE_ID)) { + // Delete any documents in the knowledge base. + for (Document document : documentsClient.listDocuments( + knowledgeBase.getName()).iterateAll()) { + // DO NOT DELETE THE TEST DOCUMENT + if (!document.getName().contains(TEST_DOCUMENT_ID)) { + documentsClient.deleteDocumentCallable().call( + DeleteDocumentRequest.newBuilder().setName(document.getName()).build()); + } + } + knowledgeBasesClient.deleteKnowledgeBase(knowledgeBase.getName()); } - knowledgeBasesClient.deleteKnowledgeBase(knowledgeBase.getName()); } } } @@ -88,7 +97,7 @@ public void tearDown() throws Exception { public void testKnowledgeBase() throws Exception { // Check the knowledge base does not yet exist List knowledgeBases = KnowledgeBaseManagement.listKnowledgeBases(PROJECT_ID); - assertEquals(0, knowledgeBases.size()); + assertEquals(1, knowledgeBases.size()); // Create a Knowledge Base KnowledgeBase knowledgeBase = @@ -101,15 +110,22 @@ public void testKnowledgeBase() throws Exception { // List Knowledge Bases knowledgeBases = KnowledgeBaseManagement.listKnowledgeBases(PROJECT_ID); - assertEquals(1, knowledgeBases.size()); - assertEquals(KNOWLEDGE_BASE_NAME, knowledgeBases.get(0).getDisplayName()); + assertEquals(2, knowledgeBases.size()); + + int found = 0; + for (KnowledgeBase knowledgeBase1 : knowledgeBases) { + if (knowledgeBase1.getDisplayName().equals(KNOWLEDGE_BASE_NAME)) { + found += 1; + } + } + assertEquals(1, found); // Delete the Knowledge Base KnowledgeBaseManagement.deleteKnowledgeBase(knowledgeBase.getName()); // List Knowledge Bases (ensure delete success) knowledgeBases = KnowledgeBaseManagement.listKnowledgeBases(PROJECT_ID); - assertEquals(0, knowledgeBases.size()); + assertEquals(1, knowledgeBases.size()); } @Test @@ -147,29 +163,25 @@ public void testDocumentManagement() throws Exception { @Test public void testDetectIntentKnowledge() throws Exception { - // Create a Knowledge Base - KnowledgeBase knowledgeBase = - KnowledgeBaseManagement.createKnowledgeBase(PROJECT_ID, KNOWLEDGE_BASE_NAME); - String knowledgeBaseName = knowledgeBase.getName(); + KnowledgeBaseName knowledgeBaseName = KnowledgeBaseName.newBuilder() + .setProject(PROJECT_ID).setKnowledgeBase(TEST_KNOWLEDGE_BASE_ID).build(); - // Create a Document - one needs to exist in order for detectIntentKnowledge to provide answers. - Document document = DocumentManagement.createDocument( - knowledgeBaseName, - DOCUMENT_BASE_NAME, - "text/html", - "FAQ", - "https://cloud.google.com/storage/docs/faq"); - assertEquals(DOCUMENT_BASE_NAME, document.getDisplayName()); + DocumentName documentName = DocumentName.newBuilder() + .setProject(PROJECT_ID) + .setKnowledgeBase(TEST_KNOWLEDGE_BASE_ID) + .setDocument(TEST_DOCUMENT_ID) + .build(); - Map allAnswers = DetectIntentKnowledge - .detectIntentKnowledge(PROJECT_ID, knowledgeBaseName, SESSION_ID, LANGUAGE_CODE, TEXTS); + Map allAnswers = DetectIntentKnowledge.detectIntentKnowledge( + PROJECT_ID, knowledgeBaseName.toString(), SESSION_ID, LANGUAGE_CODE, TEXTS); assertEquals(TEXTS.size(), allAnswers.size()); int answersFound = 0; for (String text : TEXTS) { KnowledgeAnswers knowledgeAnswers = allAnswers.get(text); if (knowledgeAnswers.getAnswersCount() > 0) { Answer answer = knowledgeAnswers.getAnswers(0); - if (text.equals(answer.getFaqQuestion()) && document.getName().equals(answer.getSource())) { + if (text.equals(answer.getFaqQuestion()) + && documentName.toString().equals(answer.getSource())) { answersFound++; } } From 661de12d6fc006e869c81020efd97f810fd8aab8 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Tue, 25 Jun 2019 08:46:30 -0600 Subject: [PATCH 2/4] Update IDs since old test deleted my knowledge base --- .../com/example/dialogflow/KnowledgeBaseManagementIT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java b/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java index c5f3dd7c6a1..ebbeeb049de 100644 --- a/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java +++ b/dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java @@ -49,8 +49,8 @@ public class KnowledgeBaseManagementIT { private static String PROJECT_ID = System.getenv().get("GOOGLE_CLOUD_PROJECT"); - private static String TEST_KNOWLEDGE_BASE_ID = "NjYxNjYwMTQ5MTIxMTgxMjg2NA"; - private static String TEST_DOCUMENT_ID = "MTIzOTcyMjY2OTk2Mzk0ODg1MTI"; + private static String TEST_KNOWLEDGE_BASE_ID = "NjcyODA2NTU4MTk4OTIzMjY0MA"; + private static String TEST_DOCUMENT_ID = "NjY2NDk4ODc5ODkyNjk3OTA3Mg"; private static String SESSION_ID = "fake_session_for_testing"; private static String LANGUAGE_CODE = "en-US"; private static String KNOWLEDGE_BASE_NAME = "fake_knowledge_base_name"; From b6e3633b385b7d553bee748a50a1a31d1d1ab31e Mon Sep 17 00:00:00 2001 From: nnegrey Date: Tue, 25 Jun 2019 10:20:06 -0600 Subject: [PATCH 3/4] Update GCS links to fix permission denied errors --- video/beta/src/test/java/com/example/video/DetectIT.java | 3 ++- video/cloud-client/README.md | 8 ++++---- .../main/java/com/example/video/QuickstartSample.java | 2 +- .../src/test/java/com/example/video/DetectIT.java | 9 +++++---- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/video/beta/src/test/java/com/example/video/DetectIT.java b/video/beta/src/test/java/com/example/video/DetectIT.java index 9e81648cadc..e1c6d943427 100644 --- a/video/beta/src/test/java/com/example/video/DetectIT.java +++ b/video/beta/src/test/java/com/example/video/DetectIT.java @@ -84,7 +84,8 @@ public void testTrackObjects() throws Exception { @Test public void testTrackObjectsGcs() throws Exception { - VideoAnnotationResults result = TrackObjects.trackObjectsGcs("gs://demomaker/cat.mp4"); + VideoAnnotationResults result = TrackObjects.trackObjectsGcs( + "gs://cloud-samples-data/video/cat.mp4"); boolean textExists = false; for (ObjectTrackingAnnotation objectTrackingAnnotation : result.getObjectAnnotationsList()) { diff --git a/video/cloud-client/README.md b/video/cloud-client/README.md index 3565429ce1f..20f71eeeef8 100644 --- a/video/cloud-client/README.md +++ b/video/cloud-client/README.md @@ -38,19 +38,19 @@ After you have authorized, you can analyze videos. Detect Labels ``` -mvn exec:java -DDetect -Dexec.args="labels gs://demomaker/cat.mp4" +mvn exec:java -DDetect -Dexec.args="labels gs://cloud-samples-data/video/cat.mp4" mvn exec:java -DDetect -Dexec.args="labels-file ./resources/cat.mp4" ``` Detect Explicit content annotations ``` -mvn exec:java -DDetect -Dexec.args="explicit-content gs://demomaker/gbikes_dinosaur.mp4" +mvn exec:java -DDetect -Dexec.args="explicit-content gs://cloud-samples-data/video/gbikes_dinosaur.mp4" ``` Detect Shots ``` -mvn exec:java -DDetect -Dexec.args="shots gs://demomaker/gbikes_dinosaur.mp4" +mvn exec:java -DDetect -Dexec.args="shots gs://cloud-samples-data/video/gbikes_dinosaur.mp4" ``` Transcribe Speech @@ -60,7 +60,7 @@ mvn exec:java -DDetect -Dexec.args="speech-transcription gs://python-docs-sample From Windows, you may need to supply your classpath differently, for example: ``` -mvn exec:java -DDetect -Dexec.args="labels gs://demomaker/cat.mp4" +mvn exec:java -DDetect -Dexec.args="labels gs://cloud-samples-data/video/cat.mp4" ``` or ``` diff --git a/video/cloud-client/src/main/java/com/example/video/QuickstartSample.java b/video/cloud-client/src/main/java/com/example/video/QuickstartSample.java index 24d9cafd1f5..86c22637153 100644 --- a/video/cloud-client/src/main/java/com/example/video/QuickstartSample.java +++ b/video/cloud-client/src/main/java/com/example/video/QuickstartSample.java @@ -39,7 +39,7 @@ public static void main(String[] args) throws Exception { // Instantiate a video intelligence client try (VideoIntelligenceServiceClient client = VideoIntelligenceServiceClient.create()) { // The Google Cloud Storage path to the video to annotate. - String gcsUri = "gs://demomaker/cat.mp4"; + String gcsUri = "gs://cloud-samples-data/video/cat.mp4"; // Create an operation that will contain the response when the operation completes. AnnotateVideoRequest request = AnnotateVideoRequest.newBuilder() diff --git a/video/cloud-client/src/test/java/com/example/video/DetectIT.java b/video/cloud-client/src/test/java/com/example/video/DetectIT.java index 37cc580845d..971fc2531d8 100644 --- a/video/cloud-client/src/test/java/com/example/video/DetectIT.java +++ b/video/cloud-client/src/test/java/com/example/video/DetectIT.java @@ -38,10 +38,10 @@ public class DetectIT { private ByteArrayOutputStream bout; private PrintStream out; - static final String LABEL_GCS_LOCATION = "gs://demomaker/cat.mp4"; + static final String LABEL_GCS_LOCATION = "gs://cloud-samples-data/video/cat.mp4"; static final String LABEL_FILE_LOCATION = "./resources/cat.mp4"; - static final String SHOTS_FILE_LOCATION = "gs://demomaker/gbikes_dinosaur.mp4"; - static final String EXPLICIT_CONTENT_LOCATION = "gs://demomaker/cat.mp4"; + static final String SHOTS_FILE_LOCATION = "gs://cloud-samples-data/video/gbikes_dinosaur.mp4"; + static final String EXPLICIT_CONTENT_LOCATION = "gs://cloud-samples-data/video/cat.mp4"; static final String SPEECH_GCS_LOCATION = "gs://java-docs-samples-testing/video/googlework_short.mp4"; private static final List POSSIBLE_TEXTS = Arrays.asList( @@ -121,7 +121,8 @@ public void testTrackObjects() throws Exception { @Test public void testTrackObjectsGcs() throws Exception { - VideoAnnotationResults result = TrackObjects.trackObjectsGcs("gs://demomaker/cat.mp4"); + VideoAnnotationResults result = TrackObjects.trackObjectsGcs( + "gs://cloud-samples-data/video/cat.mp4"); boolean textExists = false; for (ObjectTrackingAnnotation objectTrackingAnnotation : result.getObjectAnnotationsList()) { From 93ce2f94371387ec0deafc24c933d448c7335df8 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Tue, 25 Jun 2019 10:34:23 -0600 Subject: [PATCH 4/4] Use declared var --- .../src/test/java/com/example/video/DetectIT.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/video/cloud-client/src/test/java/com/example/video/DetectIT.java b/video/cloud-client/src/test/java/com/example/video/DetectIT.java index 971fc2531d8..86a0530bd54 100644 --- a/video/cloud-client/src/test/java/com/example/video/DetectIT.java +++ b/video/cloud-client/src/test/java/com/example/video/DetectIT.java @@ -106,7 +106,7 @@ public void testSpeechTranscription() throws Exception { @Test public void testTrackObjects() throws Exception { - VideoAnnotationResults result = TrackObjects.trackObjects("resources/cat.mp4"); + VideoAnnotationResults result = TrackObjects.trackObjects(LABEL_FILE_LOCATION); boolean textExists = false; for (ObjectTrackingAnnotation objectTrackingAnnotation : result.getObjectAnnotationsList()) { @@ -121,8 +121,7 @@ public void testTrackObjects() throws Exception { @Test public void testTrackObjectsGcs() throws Exception { - VideoAnnotationResults result = TrackObjects.trackObjectsGcs( - "gs://cloud-samples-data/video/cat.mp4"); + VideoAnnotationResults result = TrackObjects.trackObjectsGcs(LABEL_GCS_LOCATION); boolean textExists = false; for (ObjectTrackingAnnotation objectTrackingAnnotation : result.getObjectAnnotationsList()) {