From 6dd43834fa997642015994143e368396c26c7ff0 Mon Sep 17 00:00:00 2001 From: Manuel Kieweg <manuel.kieweg@h-da.de> Date: Tue, 15 Jun 2021 16:19:27 +0000 Subject: [PATCH] Resolve "Access to scrambled ports not working" --- api/apiIntegration_test.go | 14 +++++----- build/ci/.build-container.yml | 8 +++--- build/ci/.terraform-ci.yml | 8 +++--- build/ci/.test.yml | 10 ++++--- .../{generate_port.sh => generate_octet.bash} | 5 ++-- .../{generate_port2.sh => generate_octet.sh} | 5 ++-- test/integration/nucleusIntegration_test.go | 27 ++++--------------- test/terraform/containers.tf | 20 +++----------- test/terraform/variables.tf | 8 ++++++ 9 files changed, 43 insertions(+), 62 deletions(-) rename build/ci/{generate_port.sh => generate_octet.bash} (70%) rename build/ci/{generate_port2.sh => generate_octet.sh} (70%) diff --git a/api/apiIntegration_test.go b/api/apiIntegration_test.go index 467a20786..260578367 100644 --- a/api/apiIntegration_test.go +++ b/api/apiIntegration_test.go @@ -16,7 +16,7 @@ import ( const unreachable = "203.0.113.10:6030" const testPath = "/system/config/hostname" -var testAddress = testIP + ":" + testPort +var testAddress = "141.100.70.170:6030" var testAPIEndpoint = "gosdn-latest.apps.ocp.fbi.h-da.de" var testUsername = "admin" var testPassword = "arista" @@ -29,16 +29,16 @@ func TestMain(m *testing.M) { } func testSetupIntegration() { - viper.SetConfigFile(".k8s.toml") - if err := viper.ReadInConfig(); err != nil { - log.Error(err) - } - if os.Getenv("GOSDN_LOG") == "nolog" { log.SetLevel(log.PanicLevel) } - api := viper.GetString("GOSDN_TEST_API_ENDPOINT") + addr := os.Getenv("GOSDN_TEST_ENDPOINT") + if addr != "" { + testAddress = addr + log.Infof("GOSDN_TEST_ENDPOINT set to %v", testAddress) + } + api := os.Getenv("GOSDN_TEST_API_ENDPOINT") if api != "" { testAPIEndpoint = api log.Infof("GOSDN_TEST_API_ENDPOINT set to %v", testAPIEndpoint) diff --git a/build/ci/.build-container.yml b/build/ci/.build-container.yml index 203544342..c02be9f27 100644 --- a/build/ci/.build-container.yml +++ b/build/ci/.build-container.yml @@ -1,8 +1,4 @@ -services: - - name: docker:19.03.12-dind - command: ["--registry-mirror", "http://141.100.70.170:6000"] - variables: DOCKER_TLS_CERTDIR: "/certs" DOCKER_IMAGE_SHA: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA @@ -11,6 +7,10 @@ variables: before_script: - echo "override global before script" image: docker:19.03.12 + services: + - name: docker:19.03.12-dind + command: ["--registry-mirror", "http://141.100.70.170:6000", "--dns", "1.1.1.1"] + stage: build tags: - dind diff --git a/build/ci/.terraform-ci.yml b/build/ci/.terraform-ci.yml index e8377f940..0177f1cab 100644 --- a/build/ci/.terraform-ci.yml +++ b/build/ci/.terraform-ci.yml @@ -1,7 +1,7 @@ variables: TF_ROOT: ${CI_PROJECT_DIR}/test/terraform - TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/integration + TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${CI_PIPELINE_ID} cache: key: ${CI_PIPELINE_ID} @@ -13,7 +13,8 @@ cache: variables: CI_DEBUG_TRACE: "false" before_script: - - ./build/ci/generate_port2.sh $CI_PIPELINE_ID >> ${TF_ROOT}/port + - ./build/ci/generate_octet.sh $CI_COMMIT_SHA >> ${TF_ROOT}/firstOctet + - ./build/ci/generate_octet.sh $CI_PIPELINE_ID >> ${TF_ROOT}/secondOctet - cd ${TF_ROOT} - export TF_VAR_integration_username=terraform - export TF_VAR_integration_access_token=${TERRAFORM_API_TOKEN} @@ -21,7 +22,8 @@ cache: - export TF_VAR_tls_key=${DOCKER_TLS_KEY} - export TF_VAR_tls_cert=${DOCKER_TLS_CERT} - export TF_VAR_tls_ca_cert=${DOCKER_TLS_CA} - + - export TF_VAR_ceos_address=172.24.$(cat firstOctet).$(cat secondOctet) + - export TF_VAR_gosdn_address=172.24.$(cat secondOctet).$(cat firstOctet) rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop') variables: diff --git a/build/ci/.test.yml b/build/ci/.test.yml index d5df26647..712efe07f 100644 --- a/build/ci/.test.yml +++ b/build/ci/.test.yml @@ -7,8 +7,6 @@ variables: GOSDN_LOG: "nolog" - GOSDN_TEST_API_ENDPOINT: gosdn-$CI_COMMIT_SHA.apps.ocp.fbi.h-da.de - GOSDN_TEST_ENDPOINT_IP: 141.100.70.171 GOSDN_CHANGE_TIMEOUT: "100ms" rules: - if: $CI_NIGHTLY @@ -25,8 +23,9 @@ integration-test:nucleus: <<: *integration-test script: - - ./build/ci/generate_port.sh $CI_PIPELINE_ID >> port - - export GOSDN_TEST_ENDPOINT_PORT=$(cat port) + - ./build/ci/generate_octet.bash $CI_COMMIT_SHA >> firstOctet + - ./build/ci/generate_octet.bash $CI_PIPELINE_ID >> secondOctet + - export GOSDN_TEST_ENDPOINT=172.24.$(cat firstOctet).$(cat secondOctet):6030 - cd ./test/integration - go test -race -v -run TestGnmi_SetIntegration - go test -race -v -run TestGnmi_GetIntegration @@ -44,6 +43,9 @@ integration-test:api: - job: "build:k8s-bot" artifacts: true script: + - ./build/ci/generate_octet.bash $CI_COMMIT_SHA >> firstOctet + - ./build/ci/generate_octet.bash $CI_PIPELINE_ID >> secondOctet + - export GOSDN_TEST_API_ENDPOINT=172.24.$(cat secondOctet).$(cat firstOctet):55055 - cd ./api - go test -race -v -run TestApiIntegration diff --git a/build/ci/generate_port.sh b/build/ci/generate_octet.bash similarity index 70% rename from build/ci/generate_port.sh rename to build/ci/generate_octet.bash index 941a12843..8becfc98b 100755 --- a/build/ci/generate_port.sh +++ b/build/ci/generate_octet.bash @@ -8,7 +8,6 @@ hashed_value=$(echo $input | sha256sum | awk '{print $1}' ) decimal_value=$((16#$hashed_value)) decimal_value=${decimal_value/-/} -port=$(((decimal_value % 10000)+50000)) +octet=$(((decimal_value % 255))) -#echo -n $(($port*1)) -echo -n $port \ No newline at end of file +echo -n $octet \ No newline at end of file diff --git a/build/ci/generate_port2.sh b/build/ci/generate_octet.sh similarity index 70% rename from build/ci/generate_port2.sh rename to build/ci/generate_octet.sh index f8e1ca304..6cad5addc 100755 --- a/build/ci/generate_port2.sh +++ b/build/ci/generate_octet.sh @@ -8,7 +8,6 @@ hashed_value=$(echo $input | sha256sum | awk '{print $1}' ) decimal_value=$((16#$hashed_value)) decimal_value=${decimal_value/-/} -port=$(((decimal_value % 10000)+50000)) +octet=$(((decimal_value % 255))) -#echo -n $(($port*1)) -echo -n $port \ No newline at end of file +echo -n $octet \ No newline at end of file diff --git a/test/integration/nucleusIntegration_test.go b/test/integration/nucleusIntegration_test.go index f92e93168..6053a291b 100644 --- a/test/integration/nucleusIntegration_test.go +++ b/test/integration/nucleusIntegration_test.go @@ -2,7 +2,6 @@ package integration import ( "context" - "fmt" "os" "reflect" "sort" @@ -25,10 +24,7 @@ import ( const unreachable = "203.0.113.10:6030" const testPath = "/system/config/hostname" -var testIP = "141.100.70.171" -var testPort = "6030" -var testAddress = testIP + ":" + testPort -var testAPIEndpoint = "gosdn-latest.apps.ocp.fbi.h-da.de" +var testAddress = "141.100.70.170:6030" var testUsername = "admin" var testPassword = "arista" var opt *tpb.TransportOption @@ -44,23 +40,10 @@ func testSetupIntegration() { log.SetLevel(log.PanicLevel) } - a := os.Getenv("GOSDN_TEST_ENDPOINT_IP") - if a != "" { - testIP = a - log.Infof("GOSDN_TEST_ENDPOINT_IP set to %v", testIP) - } - port := os.Getenv("GOSDN_TEST_ENDPOINT_PORT") - if port != "" { - testPort = port - log.Infof("GOSDN_TEST_ENDPOINT_PORT set to %v", testPort) - } - testAddress = testIP + ":" + testPort - fmt.Printf("Testadress: %s, Testport: %s, Port: %s", testAddress, testPort, port) - - api := os.Getenv("GOSDN_TEST_API_ENDPOINT") - if api != "" { - testAPIEndpoint = api - log.Infof("GOSDN_TEST_API_ENDPOINT set to %v", testAPIEndpoint) + addr := os.Getenv("GOSDN_TEST_ENDPOINT") + if addr != "" { + testAddress = addr + log.Infof("GOSDN_TEST_ENDPOINT set to %v", testAddress) } u := os.Getenv("GOSDN_TEST_USER") if u != "" { diff --git a/test/terraform/containers.tf b/test/terraform/containers.tf index 8f26aab32..c735846a7 100644 --- a/test/terraform/containers.tf +++ b/test/terraform/containers.tf @@ -6,17 +6,9 @@ resource "docker_container" "gosdn" { restart = "always" networks_advanced { - name = "bridge" + name = "ci" + ipv4_address = var.gosdn_address } - - ports { - internal = 8080 - external = 8080 - } -} - -data "local_file" "port" { - filename = "port" } # create arista container @@ -26,13 +18,9 @@ resource "docker_container" "ceos" { image = docker_image.ceos.name restart = "always" - ports { - internal = 6030 - external = data.local_file.port.content - } - networks_advanced { - name = "bridge" + name = "ci" + ipv4_address = var.ceos_address } command = ["/sbin/init", diff --git a/test/terraform/variables.tf b/test/terraform/variables.tf index beacac015..6d8c0b989 100644 --- a/test/terraform/variables.tf +++ b/test/terraform/variables.tf @@ -29,4 +29,12 @@ variable "container_tag" { variable "network_name" { type = string default = "" +} + +variable "ceos_address" { + type = string +} + +variable "gosdn_address" { + type = string } \ No newline at end of file -- GitLab