TopicTests.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package com.provectus.kafka.ui.tests;
  2. import com.provectus.kafka.ui.base.BaseTest;
  3. import com.provectus.kafka.ui.models.Topic;
  4. import com.provectus.kafka.ui.pages.MainPage;
  5. import com.provectus.kafka.ui.pages.topic.TopicDetails;
  6. import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
  7. import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
  8. import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
  9. import io.qase.api.annotation.CaseId;
  10. import org.assertj.core.api.SoftAssertions;
  11. import org.junit.jupiter.api.*;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
  15. @TestInstance(TestInstance.Lifecycle.PER_CLASS)
  16. public class TopicTests extends BaseTest {
  17. private static final long SUITE_ID = 2;
  18. private static final String SUITE_TITLE = "Topics";
  19. private static final Topic TOPIC_FOR_UPDATE = new Topic()
  20. .setName("topic-to-update")
  21. .setCompactPolicyValue("Compact")
  22. .setTimeToRetainData("604800001")
  23. .setMaxSizeOnDisk("20 GB")
  24. .setMaxMessageBytes("1000020")
  25. .setMessageKey(fileToString(System.getProperty("user.dir") + "/src/test/resources/producedkey.txt"))
  26. .setMessageContent(fileToString(System.getProperty("user.dir") + "/src/test/resources/testData.txt"));
  27. private static final Topic TOPIC_FOR_DELETE = new Topic().setName("topic-to-delete");
  28. private static final List<Topic> TOPIC_LIST = new ArrayList<>();
  29. @BeforeAll
  30. public void beforeAll() {
  31. TOPIC_LIST.addAll(List.of(TOPIC_FOR_UPDATE, TOPIC_FOR_DELETE));
  32. TOPIC_LIST.forEach(topic -> apiHelper.createTopic(CLUSTER_NAME, topic.getName()));
  33. }
  34. @DisplayName("should create a topic")
  35. @Suite(suiteId = 4, title = "Create new Topic")
  36. @AutomationStatus(status = Status.AUTOMATED)
  37. @CaseId(199)
  38. @Test
  39. public void createTopic() {
  40. Topic topicToCreate = new Topic().setName("new-topic");
  41. mainPage.goTo()
  42. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
  43. topicsList.pressCreateNewTopic()
  44. .setTopicName(topicToCreate.getName())
  45. .sendData()
  46. .waitUntilScreenReady();
  47. mainPage.goTo()
  48. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
  49. Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible");
  50. TOPIC_LIST.add(topicToCreate);
  51. }
  52. @Disabled("https://github.com/provectus/kafka-ui/issues/2625")
  53. @DisplayName("should update a topic")
  54. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  55. @AutomationStatus(status = Status.AUTOMATED)
  56. @CaseId(197)
  57. @Test
  58. public void updateTopic() {
  59. topicsList.goTo(CLUSTER_NAME)
  60. .waitUntilScreenReady();
  61. topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
  62. .waitUntilScreenReady()
  63. .openEditSettings()
  64. .selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue())
  65. .setMinInsyncReplicas(10)
  66. .setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData())
  67. .setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
  68. .setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes())
  69. .sendData()
  70. .waitUntilScreenReady();
  71. topicsList.goTo(CLUSTER_NAME)
  72. .waitUntilScreenReady();
  73. topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
  74. .waitUntilScreenReady()
  75. .openEditSettings();
  76. SoftAssertions softly = new SoftAssertions();
  77. softly.assertThat(topicCreateEditForm.getCleanupPolicy()).as("Cleanup Policy").isEqualTo(TOPIC_FOR_UPDATE.getCompactPolicyValue());
  78. softly.assertThat(topicCreateEditForm.getTimeToRetain()).as("Time to retain").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData());
  79. softly.assertThat(topicCreateEditForm.getMaxSizeOnDisk()).as("Max size on disk").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk());
  80. softly.assertThat(topicCreateEditForm.getMaxMessageBytes()).as("Max message bytes").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes());
  81. softly.assertAll();
  82. }
  83. @DisplayName("should delete topic")
  84. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  85. @AutomationStatus(status = Status.AUTOMATED)
  86. @CaseId(207)
  87. @Test
  88. public void deleteTopic() {
  89. topicsList.goTo(CLUSTER_NAME)
  90. .waitUntilScreenReady()
  91. .openTopic(TOPIC_FOR_DELETE.getName())
  92. .waitUntilScreenReady()
  93. .deleteTopic();
  94. topicsList.goTo(CLUSTER_NAME)
  95. .waitUntilScreenReady();
  96. Assertions.assertFalse(topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()),"isTopicVisible");
  97. TOPIC_LIST.remove(TOPIC_FOR_DELETE);
  98. }
  99. @DisplayName("produce message")
  100. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  101. @AutomationStatus(status = Status.AUTOMATED)
  102. @CaseId(222)
  103. @Test
  104. void produceMessage() {
  105. topicsList.goTo(CLUSTER_NAME)
  106. .waitUntilScreenReady()
  107. .openTopic(TOPIC_FOR_UPDATE.getName())
  108. .waitUntilScreenReady()
  109. .openTopicMenu(TopicDetails.TopicMenu.MESSAGES)
  110. .clickOnButton("Produce Message")
  111. .setContentFiled(TOPIC_FOR_UPDATE.getMessageContent())
  112. .setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
  113. .submitProduceMessage();
  114. SoftAssertions softly = new SoftAssertions();
  115. softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
  116. softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
  117. softly.assertAll();
  118. }
  119. @AfterAll
  120. public void afterAll() {
  121. TOPIC_LIST.forEach(topic -> apiHelper.deleteTopic(CLUSTER_NAME, topic.getName()));
  122. }
  123. }