Browse Source

Merge branch 'master' into Topic_custom_params_are_disabled_upon_editing

David 2 years ago
parent
commit
935fa6ae13

+ 0 - 2
documentation/compose/kafka-ui.yaml

@@ -41,7 +41,6 @@ services:
       KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
       KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
       KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
       KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
       KAFKA_JMX_PORT: 9997
       KAFKA_JMX_PORT: 9997
-      KAFKA_JMX_HOSTNAME: localhost
       KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
       KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
       KAFKA_PROCESS_ROLES: 'broker,controller'
       KAFKA_PROCESS_ROLES: 'broker,controller'
       KAFKA_NODE_ID: 1
       KAFKA_NODE_ID: 1
@@ -70,7 +69,6 @@ services:
       KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
       KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
       KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
       KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
       KAFKA_JMX_PORT: 9998
       KAFKA_JMX_PORT: 9998
-      KAFKA_JMX_HOSTNAME: localhost
       KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9998
       KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9998
       KAFKA_PROCESS_ROLES: 'broker,controller'
       KAFKA_PROCESS_ROLES: 'broker,controller'
       KAFKA_NODE_ID: 1
       KAFKA_NODE_ID: 1

+ 2 - 1
kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaConnectServiceTests.java

@@ -1,6 +1,7 @@
 package com.provectus.kafka.ui;
 package com.provectus.kafka.ui;
 
 
 import static java.util.function.Predicate.not;
 import static java.util.function.Predicate.not;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 
 import com.provectus.kafka.ui.model.ConnectorDTO;
 import com.provectus.kafka.ui.model.ConnectorDTO;
@@ -335,7 +336,7 @@ public class KafkaConnectServiceTests extends AbstractIntegrationTest {
         .exchange()
         .exchange()
         .expectStatus().isOk()
         .expectStatus().isOk()
         .expectBodyList(ConnectorPluginDTO.class)
         .expectBodyList(ConnectorPluginDTO.class)
-        .value(plugins -> assertEquals(14, plugins.size()));
+        .value(plugins -> assertThat(plugins.size()).isGreaterThan(0));
   }
   }
 
 
   @Test
   @Test

+ 4 - 1
kafka-ui-api/src/test/java/com/provectus/kafka/ui/container/KafkaConnectContainer.java

@@ -39,7 +39,10 @@ public class KafkaConnectContainer extends GenericContainer<KafkaConnectContaine
     withEnv("CONNECT_INTERNAL_VALUE_CONVERTER", "org.apache.kafka.connect.json.JsonConverter");
     withEnv("CONNECT_INTERNAL_VALUE_CONVERTER", "org.apache.kafka.connect.json.JsonConverter");
     withEnv("CONNECT_REST_ADVERTISED_HOST_NAME", "kafka-connect");
     withEnv("CONNECT_REST_ADVERTISED_HOST_NAME", "kafka-connect");
     withEnv("CONNECT_REST_PORT", String.valueOf(CONNECT_PORT));
     withEnv("CONNECT_REST_PORT", String.valueOf(CONNECT_PORT));
-    withEnv("CONNECT_PLUGIN_PATH", "/usr/share/java,/usr/share/confluent-hub-components");
+    withEnv("CONNECT_PLUGIN_PATH",
+        "/usr/share/java,/usr/share/confluent-hub-components,"
+            // adding additional paths to find FileStreamSinkConnector
+            + "/usr/local/share/kafka/plugins,/usr/share/filestream-connectors");
     return self();
     return self();
   }
   }
 
 

+ 9 - 2
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicsList.java

@@ -70,6 +70,12 @@ public class TopicsList extends BasePage {
           .collect(Collectors.toList());
           .collect(Collectors.toList());
     }
     }
 
 
+    @Step
+    public TopicsList clickCopySelectedTopicBtn(){
+      copySelectedTopicBtn.shouldBe(Condition.enabled).click();
+      return this;
+    }
+
     private List<SelenideElement> getVisibleColumnHeaders() {
     private List<SelenideElement> getVisibleColumnHeaders() {
       return Stream.of("Replication Factor","Number of messages","Topic Name", "Partitions", "Out of sync replicas", "Size")
       return Stream.of("Replication Factor","Number of messages","Topic Name", "Partitions", "Out of sync replicas", "Size")
           .map(name -> $x(String.format(columnHeaderLocator, name)))
           .map(name -> $x(String.format(columnHeaderLocator, name)))
@@ -134,8 +140,9 @@ public class TopicsList extends BasePage {
       }
       }
 
 
       @Step
       @Step
-      public void selectItem(boolean select) {
-        selectElement(element.$x("./td[1]/input"), select);
+      public TopicsList selectItem(boolean select) {
+         selectElement(element.$x("./td[1]/input"), select);
+         return new TopicsList();
       }
       }
 
 
       @Step
       @Step

+ 1 - 1
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/BaseTest.java

@@ -34,7 +34,7 @@ import org.testcontainers.utility.DockerImageName;
 
 
 @Slf4j
 @Slf4j
 @DisplayNameGeneration(DisplayNameGenerator.class)
 @DisplayNameGeneration(DisplayNameGenerator.class)
-public class BaseTest extends Facade {
+public abstract class BaseTest extends Facade {
 
 
   private static final String SELENIUM_IMAGE_NAME = "selenium/standalone-chrome:103.0";
   private static final String SELENIUM_IMAGE_NAME = "selenium/standalone-chrome:103.0";
   private static final String SELENIARM_STANDALONE_CHROMIUM = "seleniarm/standalone-chromium:103.0";
   private static final String SELENIARM_STANDALONE_CHROMIUM = "seleniarm/standalone-chromium:103.0";

+ 32 - 0
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/suite/topics/TopicsTests.java

@@ -471,6 +471,38 @@ public class TopicsTests extends BaseTest {
         .as("isAlertWithMessageVisible()").isTrue();
         .as("isAlertWithMessageVisible()").isTrue();
   }
   }
 
 
+  @DisplayName("TopicTests.copyTopic : Copy topic")
+  @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
+  @AutomationStatus(status = Status.AUTOMATED)
+  @CaseId(8)
+  @Test
+  void checkCopyTopicPossibility(){
+    Topic topicToCopy = new Topic()
+        .setName("topic-to-copy-" + randomAlphabetic(5))
+        .setNumberOfPartitions(1);
+    navigateToTopics();
+    topicsList
+        .getTopicItem("_schemas")
+        .selectItem(true)
+        .clickCopySelectedTopicBtn();
+    topicCreateEditForm
+        .waitUntilScreenReady();
+    assertThat(topicCreateEditForm.isCreateTopicButtonEnabled()).as("isCreateTopicButtonEnabled()").isFalse();
+    topicCreateEditForm
+        .setTopicName(topicToCopy.getName())
+        .setNumberOfPartitions(topicToCopy.getNumberOfPartitions())
+        .clickCreateTopicBtn();
+    topicDetails
+        .waitUntilScreenReady();
+    TOPIC_LIST.add(topicToCopy);
+    SoftAssertions softly = new SoftAssertions();
+    softly.assertThat(topicDetails.isAlertWithMessageVisible(SUCCESS, "Topic successfully created."))
+        .as("isAlertWithMessageVisible()").isTrue();
+    softly.assertThat(topicDetails.isTopicHeaderVisible(topicToCopy.getName()))
+        .as("isTopicHeaderVisible()").isTrue();
+    softly.assertAll();
+  }
+
   @AfterAll
   @AfterAll
   public void afterAll() {
   public void afterAll() {
     TOPIC_LIST.forEach(topic -> apiService.deleteTopic(CLUSTER_NAME, topic.getName()));
     TOPIC_LIST.forEach(topic -> apiService.deleteTopic(CLUSTER_NAME, topic.getName()));