Skip to content

Commit 4408bd1

Browse files
authored
Rework the tests to remove flakiness (hopefully) (#1488)
* Rework the tests to remove flakiness (hopefully) * Update IDs since old test deleted my knowledge base
1 parent 880b2ed commit 4408bd1

File tree

1 file changed

+38
-26
lines changed

1 file changed

+38
-26
lines changed

dialogflow/cloud-client/src/test/java/com/example/dialogflow/KnowledgeBaseManagementIT.java

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121

2222
import com.google.cloud.dialogflow.v2beta1.DeleteDocumentRequest;
2323
import com.google.cloud.dialogflow.v2beta1.Document;
24+
import com.google.cloud.dialogflow.v2beta1.DocumentName;
2425
import com.google.cloud.dialogflow.v2beta1.DocumentsClient;
2526
import com.google.cloud.dialogflow.v2beta1.KnowledgeAnswers;
2627
import com.google.cloud.dialogflow.v2beta1.KnowledgeAnswers.Answer;
2728
import com.google.cloud.dialogflow.v2beta1.KnowledgeBase;
29+
import com.google.cloud.dialogflow.v2beta1.KnowledgeBaseName;
2830
import com.google.cloud.dialogflow.v2beta1.KnowledgeBasesClient;
2931
import com.google.cloud.dialogflow.v2beta1.ProjectName;
30-
3132
import com.google.common.collect.ImmutableList;
3233
import java.io.ByteArrayOutputStream;
3334
import java.io.PrintStream;
@@ -48,6 +49,8 @@
4849
public class KnowledgeBaseManagementIT {
4950

5051
private static String PROJECT_ID = System.getenv().get("GOOGLE_CLOUD_PROJECT");
52+
private static String TEST_KNOWLEDGE_BASE_ID = "NjcyODA2NTU4MTk4OTIzMjY0MA";
53+
private static String TEST_DOCUMENT_ID = "NjY2NDk4ODc5ODkyNjk3OTA3Mg";
5154
private static String SESSION_ID = "fake_session_for_testing";
5255
private static String LANGUAGE_CODE = "en-US";
5356
private static String KNOWLEDGE_BASE_NAME = "fake_knowledge_base_name";
@@ -71,13 +74,19 @@ public void tearDown() throws Exception {
7174
ProjectName projectName = ProjectName.of(PROJECT_ID);
7275
for (KnowledgeBase knowledgeBase :
7376
knowledgeBasesClient.listKnowledgeBases(projectName).iterateAll()) {
74-
// Delete any documents in the knowledge base.
75-
for (Document document : documentsClient.listDocuments(
76-
knowledgeBase.getName()).iterateAll()) {
77-
documentsClient.deleteDocumentCallable().call(
78-
DeleteDocumentRequest.newBuilder().setName(document.getName()).build());
77+
// DO NOT DELETE THE TEST KNOWLEDGE BASE
78+
if (!knowledgeBase.getName().contains(TEST_KNOWLEDGE_BASE_ID)) {
79+
// Delete any documents in the knowledge base.
80+
for (Document document : documentsClient.listDocuments(
81+
knowledgeBase.getName()).iterateAll()) {
82+
// DO NOT DELETE THE TEST DOCUMENT
83+
if (!document.getName().contains(TEST_DOCUMENT_ID)) {
84+
documentsClient.deleteDocumentCallable().call(
85+
DeleteDocumentRequest.newBuilder().setName(document.getName()).build());
86+
}
87+
}
88+
knowledgeBasesClient.deleteKnowledgeBase(knowledgeBase.getName());
7989
}
80-
knowledgeBasesClient.deleteKnowledgeBase(knowledgeBase.getName());
8190
}
8291
}
8392
}
@@ -88,7 +97,7 @@ public void tearDown() throws Exception {
8897
public void testKnowledgeBase() throws Exception {
8998
// Check the knowledge base does not yet exist
9099
List<KnowledgeBase> knowledgeBases = KnowledgeBaseManagement.listKnowledgeBases(PROJECT_ID);
91-
assertEquals(0, knowledgeBases.size());
100+
assertEquals(1, knowledgeBases.size());
92101

93102
// Create a Knowledge Base
94103
KnowledgeBase knowledgeBase =
@@ -101,15 +110,22 @@ public void testKnowledgeBase() throws Exception {
101110

102111
// List Knowledge Bases
103112
knowledgeBases = KnowledgeBaseManagement.listKnowledgeBases(PROJECT_ID);
104-
assertEquals(1, knowledgeBases.size());
105-
assertEquals(KNOWLEDGE_BASE_NAME, knowledgeBases.get(0).getDisplayName());
113+
assertEquals(2, knowledgeBases.size());
114+
115+
int found = 0;
116+
for (KnowledgeBase knowledgeBase1 : knowledgeBases) {
117+
if (knowledgeBase1.getDisplayName().equals(KNOWLEDGE_BASE_NAME)) {
118+
found += 1;
119+
}
120+
}
121+
assertEquals(1, found);
106122

107123
// Delete the Knowledge Base
108124
KnowledgeBaseManagement.deleteKnowledgeBase(knowledgeBase.getName());
109125

110126
// List Knowledge Bases (ensure delete success)
111127
knowledgeBases = KnowledgeBaseManagement.listKnowledgeBases(PROJECT_ID);
112-
assertEquals(0, knowledgeBases.size());
128+
assertEquals(1, knowledgeBases.size());
113129
}
114130

115131
@Test
@@ -147,29 +163,25 @@ public void testDocumentManagement() throws Exception {
147163

148164
@Test
149165
public void testDetectIntentKnowledge() throws Exception {
150-
// Create a Knowledge Base
151-
KnowledgeBase knowledgeBase =
152-
KnowledgeBaseManagement.createKnowledgeBase(PROJECT_ID, KNOWLEDGE_BASE_NAME);
153-
String knowledgeBaseName = knowledgeBase.getName();
166+
KnowledgeBaseName knowledgeBaseName = KnowledgeBaseName.newBuilder()
167+
.setProject(PROJECT_ID).setKnowledgeBase(TEST_KNOWLEDGE_BASE_ID).build();
154168

155-
// Create a Document - one needs to exist in order for detectIntentKnowledge to provide answers.
156-
Document document = DocumentManagement.createDocument(
157-
knowledgeBaseName,
158-
DOCUMENT_BASE_NAME,
159-
"text/html",
160-
"FAQ",
161-
"https://cloud.google.com/storage/docs/faq");
162-
assertEquals(DOCUMENT_BASE_NAME, document.getDisplayName());
169+
DocumentName documentName = DocumentName.newBuilder()
170+
.setProject(PROJECT_ID)
171+
.setKnowledgeBase(TEST_KNOWLEDGE_BASE_ID)
172+
.setDocument(TEST_DOCUMENT_ID)
173+
.build();
163174

164-
Map<String, KnowledgeAnswers> allAnswers = DetectIntentKnowledge
165-
.detectIntentKnowledge(PROJECT_ID, knowledgeBaseName, SESSION_ID, LANGUAGE_CODE, TEXTS);
175+
Map<String, KnowledgeAnswers> allAnswers = DetectIntentKnowledge.detectIntentKnowledge(
176+
PROJECT_ID, knowledgeBaseName.toString(), SESSION_ID, LANGUAGE_CODE, TEXTS);
166177
assertEquals(TEXTS.size(), allAnswers.size());
167178
int answersFound = 0;
168179
for (String text : TEXTS) {
169180
KnowledgeAnswers knowledgeAnswers = allAnswers.get(text);
170181
if (knowledgeAnswers.getAnswersCount() > 0) {
171182
Answer answer = knowledgeAnswers.getAnswers(0);
172-
if (text.equals(answer.getFaqQuestion()) && document.getName().equals(answer.getSource())) {
183+
if (text.equals(answer.getFaqQuestion())
184+
&& documentName.toString().equals(answer.getSource())) {
173185
answersFound++;
174186
}
175187
}

0 commit comments

Comments
 (0)