diff --git a/.github/actions/to-integration-tests/Dockerfile b/.github/actions/to-integration-tests/Dockerfile new file mode 100644 index 0000000000..3457f8dee9 --- /dev/null +++ b/.github/actions/to-integration-tests/Dockerfile @@ -0,0 +1,26 @@ +# 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. + +FROM golang:1.14.2-alpine + +ENV CGO_ENABLED=0 +RUN apk add --no-cache gettext git + +COPY entrypoint.sh database.json traffic-ops-test.json cdn.json / +RUN chmod a+x /entrypoint.sh + +ENTRYPOINT /entrypoint.sh diff --git a/.github/actions/to-integration-tests/README.md b/.github/actions/to-integration-tests/README.md new file mode 100644 index 0000000000..6f81959326 --- /dev/null +++ b/.github/actions/to-integration-tests/README.md @@ -0,0 +1,60 @@ + + +# to-integration-tests Docker action +This action runs the Traffic Ops Go client integration tests with the Traffic +Ops API. + +## Inputs + +### `version` +**Required** Major API version to test e.g. 1, 2, 3 etc. + +## Outputs + +### `exit-code` +1 if the Go program(s) could be built successfully. + +## Example usage +```yaml +jobs: + tests: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:11.9 + env: + POSTGRES_USER: traffic_ops + POSTGRES_PASSWORD: twelve + POSTGRES_DB: traffic_ops + ports: + - 5432:5432 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + steps: + - name: Checkout + uses: actions/checkout@master + - name: initialize database + uses: ./.github/actions/todb-init + - name: Run API v5 tests + uses: ./.github/actions/to-integration-tests + with: + version: 5 +``` diff --git a/.github/actions/to-integration-tests/action.yml b/.github/actions/to-integration-tests/action.yml new file mode 100644 index 0000000000..8c9d57f130 --- /dev/null +++ b/.github/actions/to-integration-tests/action.yml @@ -0,0 +1,28 @@ +# 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. + +name: 'to-integration-tests' +description: 'Runs Traffic Ops Go client/API integration tests' +inputs: + version: + description: 'Version of Traffic Ops API against which to run tests, e.g. 1, 2, 3, etc.' + required: true +runs: + using: 'docker' + image: 'Dockerfile' + args: + - ${{ inputs.version }} diff --git a/.github/actions/to-integration-tests/cdn.json b/.github/actions/to-integration-tests/cdn.json new file mode 100644 index 0000000000..efda921f66 --- /dev/null +++ b/.github/actions/to-integration-tests/cdn.json @@ -0,0 +1,51 @@ +{ + "hypnotoad" : { + "listen" : [ + "https://not-a-real-host.test:1?cert=$PWD/localhost.crt&key=$PWD/localhost.key&verify=0x00&ciphers=AES128-GCM-SHA256:HIGH:!RC4:!MD5:!aNULL:!EDH:!ED" + ], + "user" : "trafops", + "group" : "trafops", + "heartbeat_timeout" : 20, + "pid_file" : "/var/run/traffic_ops.pid", + "workers" : 12 + }, + "use_ims": true, + "traffic_ops_golang" : { + "insecure": true, + "port" : "6443", + "log_location_error": "stderr", + "log_location_warning": "stderr", + "log_location_info": null, + "log_location_debug": null, + "log_location_event": null, + "max_db_connections": 20, + "db_conn_max_lifetime_seconds": 60, + "db_query_timeout_seconds": 20, + "supported_ds_metrics": [ "kbps", "tps_total", "tps_2xx", "tps_3xx", "tps_4xx", "tps_5xx" ] + }, + "cors" : { + "access_control_allow_origin" : "*" + }, + "to" : { + "base_url" : "https://localhost", + "email_from" : "no-reply@traffic-ops.test", + "no_account_found_msg" : "A Traffic Ops user account is required for access. Please contact your Traffic Ops user administrator." + }, + "portal" : { + "base_url" : "https://not-a-real-host.test/#!/", + "email_from" : "no-reply@traffic-portal.test", + "pass_reset_path" : "user", + "user_register_path" : "user" + }, + "secrets" : [ + "blahblah" + ], + "geniso" : { + "iso_root_path" : "/opt/traffic_ops/app/public" + }, + "inactivity_timeout" : 60, + "smtp" : { + "enabled" : false + }, + "InfluxEnabled": false +} diff --git a/.github/actions/to-integration-tests/database.json b/.github/actions/to-integration-tests/database.json new file mode 100644 index 0000000000..8d08eb40d4 --- /dev/null +++ b/.github/actions/to-integration-tests/database.json @@ -0,0 +1,10 @@ +{ + "description": "Local PostgreSQL database on port 5432", + "dbname": "traffic_ops", + "hostname": "postgres", + "user": "traffic_ops", + "password": "twelve", + "port": "5432", + "ssl": false, + "type": "Pg" +} diff --git a/.github/actions/to-integration-tests/dbconf.yml b/.github/actions/to-integration-tests/dbconf.yml new file mode 100644 index 0000000000..f565670b38 --- /dev/null +++ b/.github/actions/to-integration-tests/dbconf.yml @@ -0,0 +1,23 @@ +# 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: "1.0" +name: dbconf.yml + +test: + driver: postgres + open: host=postgres port=5432 user=traffic_ops password=twelve dbname=traffic_ops sslmode=disable + diff --git a/.github/actions/to-integration-tests/entrypoint.sh b/.github/actions/to-integration-tests/entrypoint.sh new file mode 100644 index 0000000000..cc99f4a039 --- /dev/null +++ b/.github/actions/to-integration-tests/entrypoint.sh @@ -0,0 +1,111 @@ +#!/bin/sh -l +# 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. + +GOPATH="$(mktemp -d)" +SRCDIR="$GOPATH/src/github.com/apache" +mkdir -p "$SRCDIR" +ln -s "$PWD" "$SRCDIR/trafficcontrol" + +cd "$SRCDIR/trafficcontrol/traffic_ops/traffic_ops_golang" + + +/usr/local/go/bin/go get ./... +/usr/local/go/bin/go build . + +echo " +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIJAJgQuE9T48+gMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwHhcNMTcwNTA5MDIyNTI0WhcNMTgwNTA5MDIyNTI0WjBF +MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50 +ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA1OsuQ71qaSZ4ivGnh4YryeQEHMn5wZLX7kWYB637ssyOJnkU1ZGs93JM +XJADzsjmssP6icSDhV2JPgDDYzx1eBJt6y3vHI7L3AdGfQJj+4FFABKR8moqpc1J +WIMGnPzO6DeEc8irf0qxSh+yvuFX0j6oS8oCqiRxz5+HL2wEGWmrgr37JY4/bs7o +4CMY19Ru1dP2Fr292HEIqCEnLTOuaHSWAEWx1Tm93kT9sXbw/SG2JTLQSX80biFL +7foJeoGWLls2reTCYTprzWFaMu3x9I8HLtf4VIN44rtvo5N20KYgjGqvPjFGPljL +yrgB8rXSCpH3M4AbazxD8fZKbdORawIDAQABo4GnMIGkMB0GA1UdDgQWBBT6zEpf +DYbYCI3Bu82+Q5SmI+/7ojB1BgNVHSMEbjBsgBT6zEpfDYbYCI3Bu82+Q5SmI+/7 +oqFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV +BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJgQuE9T48+gMAwGA1UdEwQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAGLs1NcYNtUgN6FuMb6/UskEWLTKwfno +NBtNdIbcZP3HmJHwruLWCeqj6HIWJC87EqmPTIYPdem3SAN1L20fWpzm7AB7av+2 +wTCAPVP0punF/IouSb6fyo8fdG1a104Mge4iy/Sf2uf09NEv08sfVdB4P0tKRRlg +5KChhmspdPP7fmPXyghm4IC0Seknmh6IlVOnALXLU5OoCLHTie5Hjv4Tm8Xu0oBA +dIH/cPu2/w5SAIVq9CtcsdglS0ZsCAv4W2YieuSLPf5xuI0q/5lFZGNoDpIWJldx +Y2IpnoNCrHEAxijP5ctPawsxkSt2PmQ5uNNL7TbMudc3hZzOpTPkGoo= +-----END CERTIFICATE----- +" > localhost.crt + +echo "-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEA1OsuQ71qaSZ4ivGnh4YryeQEHMn5wZLX7kWYB637ssyOJnkU +1ZGs93JMXJADzsjmssP6icSDhV2JPgDDYzx1eBJt6y3vHI7L3AdGfQJj+4FFABKR +8moqpc1JWIMGnPzO6DeEc8irf0qxSh+yvuFX0j6oS8oCqiRxz5+HL2wEGWmrgr37 +JY4/bs7o4CMY19Ru1dP2Fr292HEIqCEnLTOuaHSWAEWx1Tm93kT9sXbw/SG2JTLQ +SX80biFL7foJeoGWLls2reTCYTprzWFaMu3x9I8HLtf4VIN44rtvo5N20KYgjGqv +PjFGPljLyrgB8rXSCpH3M4AbazxD8fZKbdORawIDAQABAoIBAQCYOINc/qCDCHQJ +sfa511ya/B9MjcG3eMpTmQG2C9b033WJX+tbPMjSJ68cRgHS5qK4j5AgypPU1yh1 +YYpO+jxpWZOoHbDjU9u/NJxaZ0kf2C2CfcRF8U0IOJoFY7doqP0r2/Uf6glh+f6C +JeNewDBPKWictpHtHh0X+M9nQew0VZ7slXnV+IwUxiWYEtiIjwMyzSmfDEnN3ix5 +fuVQLvVaq+bbqXj2rMpJWFj7zMsG5HRePQl2kQGtMYLCIalnJIQs5jQn2YsliNyy +fQiwWnU0wkrLlmkhlivlISRDtP35WQgF8ObsoQ3LZXRflB0C7U7zEl7Dj3Vi7WXr +jsRZC4dxAoGBAPwuPdtc9gSNKjn8RnqfEJjdSo1qdLbGvRcSJNy4/kEEFECJXkeO +mV/aklCi39cxAaIjVdTQ1XN67RMxgdekCI2Eg8h4RdvwgB/tAO+C3ExzMSOA1IcZ +tWuwIA2YnaFF9Sla9iJqxgtoGlaqm4VTUM/IdZqlzsP08pfNq7bXPsr9AoGBANgk +tkovf1Y0O4lBHX3eVLnHXForxEZh8bGHwuJJWWzb0ZFcXrrSd8FSycZrR28v4sdQ +WSSVPz3Op95HoTVXVL9EJcZ+MTnHaoCHbYBkrGTlGviu5Fl2V5EbrN7R7CdxJeem +HOU4shTy1acMPgf8sT17ykkXhVeUhSK2Jg6fZn6HAoGAI4/51SeE4htuKwMyhTRN +SOFcFBlBIE1ieRBr9lx4Ln7+xCMbEog/hM7z9z8gxd35Vv4YqoxQrZpWOHCw2NIf +CqX3V5vubhe6WcY4bY5MttM/yLvwPKUZeng57PDqucV9zzkuoKfiCdXCcRpaGDEp +okOooghj4ip204WDg6NTDZkCgYEAwZTfzsGLgmF1kRBIoZqmt1zeUcQxHfhKx32Y +BaM7/EtD/rSEAz7NEtBa9uLOL77rlSdZL3KcGXck0efFckitFkCqtIQBAoaf1E12 +vS9tV0/6QBAjZByhgM0Qnt/Uad7k2/vilUmZ9TkoMVy9kdm3xCFCowP14OKb+uK4 +YxBQc7ECgYEAm7eVtNlPHYmC54FU2bLucryNMLmu9I8O6zvbK5sxiMdtlh7OjaUB +RQS5iVc0iTacDZTGh7eqNzgGplj76pWGHeZUy0xIj/ZIRu2qOy0v+ffqfX1wCz7p +A22D22wvfs7CE3cUz/8UnvLM3kbTTu1WbbBbrHjAV47sAHjW/ckTqeo= +-----END RSA PRIVATE KEY----- +" > localhost.key + +envsubst cdn.conf +mv /database.json ./database.conf + +./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf >out.log 2>err.log & + +if [ -z "$INPUT_VERSION" ]; then + INPUT_VERSION="3"; +fi + +cd "../testing/api/v$INPUT_VERSION" + +cp /traffic-ops-test.json ./traffic-ops-test.conf +/usr/local/go/bin/go test -v --cfg ./traffic-ops-test.conf +CODE="$?" +rm traffic-ops-test.conf + +# TODO - make these build artifacts +if [ -f ../../../traffic_ops_golang/out.log ]; then + cat ../../../traffic_ops_golang/out.log + rm ../.../../traffic_ops_golang/out.log +fi + +if [ -f ../../../traffic_ops_golang/err.log ]; then + cat ../../../traffic_ops_golang/err.log >&2 + rm ../../../traffic_ops_golang/err.log +fi + +exit "$CODE" diff --git a/.github/actions/to-integration-tests/traffic-ops-test.json b/.github/actions/to-integration-tests/traffic-ops-test.json new file mode 100644 index 0000000000..78c96eac95 --- /dev/null +++ b/.github/actions/to-integration-tests/traffic-ops-test.json @@ -0,0 +1,38 @@ +{ + "default": { + "logLocations": { + "debug": "stderr", + "error": "stderr", + "event": "stderr", + "info": "stderr", + "warning": "stderr" + }, + "session": { + "timeoutInSecs": 60 + } + }, + "trafficOps": { + "URL": "https://localhost:6443", + "password": "twelve", + "users": { + "disallowed": "disallowed", + "operations": "operations", + "admin": "admin", + "federation": "federation", + "portal": "portal", + "readOnly": "readOnly", + "extension": "extension" + } + }, + "trafficOpsDB": { + "dbname": "traffic_ops", + "description": "Test database to_test", + "hostname": "postgres", + "password": "twelve", + "port": "5432", + "type": "Pg", + "user": "traffic_ops" + }, + "noPerl": true, + "noISO": true +} diff --git a/.github/actions/todb-init/Dockerfile b/.github/actions/todb-init/Dockerfile new file mode 100644 index 0000000000..d5836abc81 --- /dev/null +++ b/.github/actions/todb-init/Dockerfile @@ -0,0 +1,29 @@ +# 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. + +FROM golang:1.14.2-alpine + +RUN apk add --no-cache git gcc gettext postgresql-client musl-dev &&\ + go get -v bitbucket.org/liamstask/goose/cmd/goose &&\ + mv $GOPATH/bin/goose /bin/ &&\ + apk del git gcc musl-dev + + +COPY entrypoint.sh dbconf.yml / +RUN chmod a+x /entrypoint.sh + +ENTRYPOINT /entrypoint.sh diff --git a/.github/actions/todb-init/README.md b/.github/actions/todb-init/README.md new file mode 100644 index 0000000000..c341d44321 --- /dev/null +++ b/.github/actions/todb-init/README.md @@ -0,0 +1,50 @@ + + +# todb-init Docker action +This action initializes a Traffic Ops database in a locally running PostgresQL +instance. + +## Outputs + +### `exit-code` +1 if the database initialized successfully. + +## Example usage +```yaml +jobs: + tests: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:11.9 + env: + POSTGRES_USER: traffic_ops + POSTGRES_PASSWORD: twelve + POSTGRES_DB: traffic_ops + ports: + - 5432:5432 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + steps: + - name: Checkout + uses: actions/checkout@master + - name: ./.github/actions/todb-init +``` diff --git a/.github/actions/todb-init/action.yml b/.github/actions/todb-init/action.yml new file mode 100644 index 0000000000..394fa964af --- /dev/null +++ b/.github/actions/todb-init/action.yml @@ -0,0 +1,22 @@ +# 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. + +name: 'todb-init' +description: 'Initializes a Traffic Ops database using a local PostgreSQL instance' +runs: + using: 'docker' + image: 'Dockerfile' diff --git a/.github/actions/todb-init/dbconf.yml b/.github/actions/todb-init/dbconf.yml new file mode 100644 index 0000000000..f565670b38 --- /dev/null +++ b/.github/actions/todb-init/dbconf.yml @@ -0,0 +1,23 @@ +# 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: "1.0" +name: dbconf.yml + +test: + driver: postgres + open: host=postgres port=5432 user=traffic_ops password=twelve dbname=traffic_ops sslmode=disable + diff --git a/.github/actions/todb-init/entrypoint.sh b/.github/actions/todb-init/entrypoint.sh new file mode 100644 index 0000000000..a951ce4f6e --- /dev/null +++ b/.github/actions/todb-init/entrypoint.sh @@ -0,0 +1,28 @@ +#!/bin/sh -l +# 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. + +set -e + +cd "traffic_ops/app/db" + +mv /dbconf.yml ./ + +psql -d postgresql://traffic_ops:twelve@postgres:5432/traffic_ops < ./create_tables.sql >/dev/null +goose --env=test --path="$PWD" up +psql -d postgresql://traffic_ops:twelve@postgres:5432/traffic_ops < ./seeds.sql >/dev/null +psql -d postgresql://traffic_ops:twelve@postgres:5432/traffic_ops < ./patches.sql >/dev/null diff --git a/.github/workflows/traffic ops.yml b/.github/workflows/traffic ops.yml new file mode 100644 index 0000000000..0db639fa0d --- /dev/null +++ b/.github/workflows/traffic ops.yml @@ -0,0 +1,69 @@ +# 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. + +name: Traffic Ops Go client/API integration tests + +on: + push: + paths: + - traffic_ops/traffic_ops_golang/**.go + - traffic_ops/testing/api/**.go + - traffic_ops/*client/**.go + create: + pull_request: + paths: + - traffic_ops/traffic_ops_golang/**.go + - traffic_ops/testing/api/**.go + - traffic_ops/*client/**.go + types: [opened, reopened, edited, synchronize] + +jobs: + + API_tests: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:11 + env: + POSTGRES_USER: traffic_ops + POSTGRES_PASSWORD: twelve + POSTGRES_DB: traffic_ops + ports: + - 5432:5432 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + steps: + - name: Checkout + uses: actions/checkout@master + - name: Initialize Traffic Ops Database + id: todb + uses: ./.github/actions/todb-init + - name: Run API v1 tests + uses: ./.github/actions/to-integration-tests + with: + version: 1 + - name: Run API v2 tests + if: ${{ steps.todb.outcome == 'success' && always() }} + uses: ./.github/actions/to-integration-tests + with: + version: 2 + - name: Run API v3 tests + if: ${{ steps.todb.outcome == 'success' && always() }} + uses: ./.github/actions/to-integration-tests + with: + version: 3 diff --git a/traffic_ops/testing/api/v1/federation_users_test.go b/traffic_ops/testing/api/v1/federation_users_test.go index 4473c356ef..2ec7417bb1 100644 --- a/traffic_ops/testing/api/v1/federation_users_test.go +++ b/traffic_ops/testing/api/v1/federation_users_test.go @@ -20,6 +20,9 @@ import ( ) func TestFederationUsers(t *testing.T) { + if Config.NoPerl { + t.Skip("No Perl instance for proxying") + } WithObjs(t, []TCObj{CDNs, Types, Tenants, Users, Parameters, Profiles, Statuses, Divisions, Regions, PhysLocations, CacheGroups, DeliveryServices, UsersDeliveryServices, CDNFederations, FederationUsers}, func() { CreateTestInvalidFederationUsers(t) GetTestInvalidFederationIDUsers(t) diff --git a/traffic_ops/testing/api/v1/federations_test.go b/traffic_ops/testing/api/v1/federations_test.go index 0b62080134..28c608ba9a 100644 --- a/traffic_ops/testing/api/v1/federations_test.go +++ b/traffic_ops/testing/api/v1/federations_test.go @@ -24,6 +24,9 @@ import ( ) func TestFederations(t *testing.T) { + if Config.NoPerl { + t.Skip("No Perl instance for proxying") + } WithObjs(t, []TCObj{CDNs, Types, Tenants, Parameters, Profiles, Statuses, Divisions, Regions, PhysLocations, CacheGroups, DeliveryServices, UsersDeliveryServices, CDNFederations}, func() { PostDeleteTestFederationsDeliveryServices(t) GetTestFederations(t)