You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ze...@apache.org on 2022/01/03 07:27:14 UTC

[incubator-streampipes] 02/02: [STREAMPIPES-492] Provide test for archetypes

This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git

commit c380f5d5d51cd9106b3bd687f665ba163447642f
Author: Philipp Zehnder <ze...@fzi.de>
AuthorDate: Mon Jan 3 08:26:59 2022 +0100

    [STREAMPIPES-492] Provide test for archetypes
---
 ui/.gitignore                                      |   2 +
 .../tests/experimental/testJvmArchetype/.env       |  20 +++
 .../testJvmArchetype/armDockerFile/Dockerfile      |  25 +++
 .../experimental/testJvmArchetype/backend/.env     |  20 +++
 .../testJvmArchetype/backend/docker-compose.yml    |  51 +++++++
 .../testJvmArchetype/docker-compose.yml            | 167 +++++++++++++++++++++
 .../experimental/testJvmArchetype/testArchetype.sh |  29 ++++
 .../testJvmArchetype/testJvmArchetype.ts           |  63 ++++++++
 8 files changed, 377 insertions(+)

diff --git a/ui/.gitignore b/ui/.gitignore
index fe19d16..757a0d6 100644
--- a/ui/.gitignore
+++ b/ui/.gitignore
@@ -37,6 +37,8 @@ ui/src/assets/img/sp/logo-navigation.png
 # dependencies
 /node_modules
 
+
+
 # IDEs and editors
 /.idea
 .project
diff --git a/ui/cypress/tests/experimental/testJvmArchetype/.env b/ui/cypress/tests/experimental/testJvmArchetype/.env
new file mode 100644
index 0000000..6aacc5e
--- /dev/null
+++ b/ui/cypress/tests/experimental/testJvmArchetype/.env
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SP_VERSION=0.69.0-SNAPSHOT
+SP_DOCKER_REGISTRY=apachestreampipes
+SP_SUBNET=172.31.0.0/16
+SP_CONSUL_CONTAINER_IP=172.31.0.9
+COMPOSE_PROJECT_NAME=streampipes
diff --git a/ui/cypress/tests/experimental/testJvmArchetype/armDockerFile/Dockerfile b/ui/cypress/tests/experimental/testJvmArchetype/armDockerFile/Dockerfile
new file mode 100644
index 0000000..abe2a24
--- /dev/null
+++ b/ui/cypress/tests/experimental/testJvmArchetype/armDockerFile/Dockerfile
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ARG BASE_IMAGE=arm32v7/openjdk:11-jre-slim
+FROM $BASE_IMAGE
+
+ENV CONSUL_LOCATION consul
+
+EXPOSE 8090
+
+COPY ../../../../../../../delme/automated-test/target/automated-test.jar  /streampipes-extensions-service.jar
+
+ENTRYPOINT ["java", "-jar", "/streampipes-extensions-service.jar"]
diff --git a/ui/cypress/tests/experimental/testJvmArchetype/backend/.env b/ui/cypress/tests/experimental/testJvmArchetype/backend/.env
new file mode 100644
index 0000000..6aacc5e
--- /dev/null
+++ b/ui/cypress/tests/experimental/testJvmArchetype/backend/.env
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SP_VERSION=0.69.0-SNAPSHOT
+SP_DOCKER_REGISTRY=apachestreampipes
+SP_SUBNET=172.31.0.0/16
+SP_CONSUL_CONTAINER_IP=172.31.0.9
+COMPOSE_PROJECT_NAME=streampipes
diff --git a/ui/cypress/tests/experimental/testJvmArchetype/backend/docker-compose.yml b/ui/cypress/tests/experimental/testJvmArchetype/backend/docker-compose.yml
new file mode 100644
index 0000000..104d19e
--- /dev/null
+++ b/ui/cypress/tests/experimental/testJvmArchetype/backend/docker-compose.yml
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+
+
+
+
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+version: "3.4"
+
+# global logging
+x-logging:
+  &default-logging
+  options:
+    max-size: '12m'
+    max-file: '5'
+  driver: json-file
+
+services:
+
+  # StreamPipes services
+  backend:
+    image: "${SP_DOCKER_REGISTRY}/backend:${SP_VERSION}"
+    volumes:
+      - backend:/root/.streampipes
+      - files:/spImages
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+volumes:
+  backend:
+  files:
+
+networks:
+  spnet:
+    driver: bridge
+    ipam:
+     config:
+       - subnet: ${SP_SUBNET}
diff --git a/ui/cypress/tests/experimental/testJvmArchetype/docker-compose.yml b/ui/cypress/tests/experimental/testJvmArchetype/docker-compose.yml
new file mode 100644
index 0000000..f8a53f2
--- /dev/null
+++ b/ui/cypress/tests/experimental/testJvmArchetype/docker-compose.yml
@@ -0,0 +1,167 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+
+
+
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+version: "3.4"
+
+# global logging
+x-logging:
+  &default-logging
+  options:
+    max-size: '12m'
+    max-file: '5'
+  driver: json-file
+
+services:
+
+  ui:
+    image: "${SP_DOCKER_REGISTRY}/ui:${SP_VERSION}"
+    ports:
+      - "80:80"
+    depends_on:
+      - couchdb
+      - activemq
+      - consul
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+  # Mandatory external services
+  activemq:
+    image: fogsyio/activemq:5.15.9
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+  consul:
+    image: fogsyio/consul:1.9.6
+    environment:
+      - "CONSUL_LOCAL_CONFIG={\"disable_update_check\": true}"
+      - "CONSUL_BIND_INTERFACE=eth0"
+      - "CONSUL_HTTP_ADDR=0.0.0.0"
+    entrypoint:
+      - consul
+      - agent
+      - -server
+      - -bootstrap-expect=1
+      - -data-dir=/consul/data
+      - -node=consul-one
+      - -bind={{ GetInterfaceIP "eth0" }}
+      - -client=0.0.0.0
+      - -enable-script-checks=true
+      - -ui      
+    volumes:
+      - consul:/consul/data
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+        ipv4_address: ${SP_CONSUL_CONTAINER_IP}
+
+  couchdb:
+    image: couchdb:2.3.1
+    volumes:
+      - couchdb:/opt/couchdb/data
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+  kafka:
+    image: fogsyio/kafka:2.2.0
+    hostname: kafka
+    depends_on:
+      - zookeeper
+    environment:
+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
+      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://:9092
+      KAFKA_LISTENERS: PLAINTEXT://:9092
+      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
+      KAFKA_ADVERTISED_HOST_NAME: kafka
+      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
+      KAFKA_MESSAGE_MAX_BYTES: 5000012
+      KAFKA_FETCH_MESSAGE_MAX_BYTES: 5000012
+      KAFKA_REPLICA_FETCH_MAX_BYTES: 10000000
+    volumes:
+      - kafka:/kafka
+      - /var/run/docker.sock:/var/run/docker.sock
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+  zookeeper:
+    image: fogsyio/zookeeper:3.4.13
+    volumes:
+      - zookeeper:/opt/zookeeper-3.4.13
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+  influxdb:
+    image: fogsyio/influxdb:1.7
+    environment:
+      - INFLUXDB_DATA_ENGINE=tsm1
+      - INFLUXDB_REPORTING_DISABLED=false
+      - INFLUXDB_ADMIN_ENABLED=true
+    volumes:
+      - influxdb:/var/lib/influxdb
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+  # Lite version pipeline elements
+  extensions-all-jvm:
+    image: "${SP_DOCKER_REGISTRY}/extensions-all-jvm:${SP_VERSION}"
+    depends_on:
+      - consul
+    volumes:
+      - files:/spImages
+    logging: *default-logging
+    restart: unless-stopped
+    networks:
+      spnet:
+
+  maven-archetype-jvm-extensions:
+    image: maven-archetype-jvm-extensions
+    #build:
+    #  context: ./automated-test
+    #  dockerfile: Dockerfile
+    logging: *default-logging
+    networks:
+      spnet:
+
+
+volumes:
+  consul:
+  connect:
+  couchdb:
+  kafka:
+  zookeeper:
+  influxdb:
+  files:
+
+
+networks:
+  spnet:
+    driver: bridge
+    ipam:
+     config:
+       - subnet: ${SP_SUBNET}
diff --git a/ui/cypress/tests/experimental/testJvmArchetype/testArchetype.sh b/ui/cypress/tests/experimental/testJvmArchetype/testArchetype.sh
new file mode 100755
index 0000000..82ea8bc
--- /dev/null
+++ b/ui/cypress/tests/experimental/testJvmArchetype/testArchetype.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+mvn archetype:generate -DarchetypeGroupId=org.apache.streampipes \
+	-DarchetypeArtifactId=streampipes-archetype-extensions-jvm -DarchetypeVersion=0.69.0-SNAPSHOT \
+	-DgroupId=org.streampipes.test -DartifactId=automated-test -DclassNamePrefix=AutomatedTest -DpackageName=test -DinteractiveMode=false
+
+cd automated-test
+mvn clean package
+
+cd ..
+docker-compose build
+docker-compose up -d
+sleep 30
+
+cd backend
+docker-compose up -d
+sleep 30
+
+cd ../../../../../
+ls
+npx cypress run --spec 'cypress/tests/experimental/testJvmArchetype/testJvmArchetype.ts'
+ls
+cd cypress/tests/experimental/testJvmArchetype/backend/
+docker-compose down -v
+
+cd ..
+docker-compose down -v
+
+rm -r automated-test
diff --git a/ui/cypress/tests/experimental/testJvmArchetype/testJvmArchetype.ts b/ui/cypress/tests/experimental/testJvmArchetype/testJvmArchetype.ts
new file mode 100644
index 0000000..8f0c6d6
--- /dev/null
+++ b/ui/cypress/tests/experimental/testJvmArchetype/testJvmArchetype.ts
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+import { ConnectUtils } from '../../../support/utils/ConnectUtils';
+import { PipelineUtils } from '../../../support/utils/PipelineUtils';
+import { PipelineElementBuilder } from '../../../support/builder/PipelineElementBuilder';
+import { PipelineBuilder } from '../../../support/builder/PipelineBuilder';
+import { DashboardUtils } from '../../../support/utils/DashboardUtils';
+
+const adapterName = 'simulator';
+
+
+describe('Prepare StreamPipes for archetype test', () => {
+  beforeEach('Setup Test', () => {
+    cy.initStreamPipesTest();
+    ConnectUtils.addMachineDataSimulator(adapterName);
+  });
+
+  it('Perform Test', () => {
+    const pipelineName = 'ValidateArchetypePipeline';
+
+    const pipelineInput = PipelineBuilder.create(pipelineName)
+        .addSource(adapterName)
+        .addProcessingElement(
+            PipelineElementBuilder.create('automatedtestprocessor')
+                .addInput('input', 'example-key', 'newField')
+                .build())
+        .addSink(
+            PipelineElementBuilder.create('dashboard_sink')
+                .addInput('input', 'visualization-name', 'Demo')
+                .build())
+        .build();
+
+    PipelineUtils.testPipeline(pipelineInput);
+
+    DashboardUtils.goToDashboard();
+
+    // Add new dashboard
+    const dashboardName = 'testDashboard';
+    DashboardUtils.addAndEditDashboard(dashboardName);
+
+    DashboardUtils.addWidget(pipelineName, 'raw');
+
+    // Validate that data is coming (at least 3 events)
+    DashboardUtils.validateRawWidgetEvents(3);
+  });
+});
+