...

Text file src/github.com/sigstore/rekor/e2e-test.sh

Documentation: github.com/sigstore/rekor

     1#!/bin/bash
     2#
     3# Copyright 2022 The Sigstore Authors.
     4#
     5# Licensed under the Apache License, Version 2.0 (the "License");
     6# you may not use this file except in compliance with the License.
     7# You may obtain a copy of the License at
     8#
     9#     http://www.apache.org/licenses/LICENSE-2.0
    10#
    11# Unless required by applicable law or agreed to in writing, software
    12# distributed under the License is distributed on an "AS IS" BASIS,
    13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14# See the License for the specific language governing permissions and
    15# limitations under the License.
    16
    17set -e
    18testdir=$(dirname "$0")
    19
    20docker_compose="docker compose -f docker-compose.yml -f docker-compose.test.yml"
    21if ! ${docker_compose} version >/dev/null 2>&1; then
    22    docker_compose="docker-compose -f docker-compose.yml -f docker-compose.test.yml"
    23fi
    24
    25rm -f /tmp/pkg-rekor-*.cov
    26echo "installing gocovmerge"
    27make gocovmerge
    28
    29echo "building test-only containers"
    30docker build -t gcp-pubsub-emulator -f Dockerfile.pubsub-emulator .
    31docker kill $(docker ps -q) || true
    32
    33echo "starting services"
    34${docker_compose} up -d --build
    35
    36echo "building CLI and server"
    37# set the path to the root of the repo
    38dir=$(git rev-parse --show-toplevel)
    39go test -c ./cmd/rekor-cli -o rekor-cli -cover -covermode=count -coverpkg=./...
    40go test -c ./cmd/rekor-server -o rekor-server -covermode=count -coverpkg=./...
    41
    42count=0
    43echo -n "waiting up to 120 sec for system to start"
    44until [ $(${docker_compose} ps | grep -c "(healthy)") == 4 ];
    45do
    46    if [ $count -eq 12 ]; then
    47       echo "! timeout reached"
    48       exit 1
    49    else
    50       echo -n "."
    51       sleep 10
    52       let 'count+=1'
    53    fi
    54done
    55
    56echo
    57echo "running tests"
    58REKORTMPDIR="$(mktemp -d -t rekor_test.XXXXXX)"
    59cp $dir/rekor-cli $REKORTMPDIR/rekor-cli
    60touch $REKORTMPDIR.rekor.yaml
    61trap "rm -rf $REKORTMPDIR" EXIT
    62if ! REKORTMPDIR=$REKORTMPDIR go test  -tags=e2e $(go list ./... | grep -v ./tests) ; then
    63   ${docker_compose} logs --no-color > /tmp/docker-compose.log
    64   exit 1
    65fi
    66if ${docker_compose} logs --no-color | grep -q "panic: runtime error:" ; then
    67   # if we're here, we found a panic
    68   echo "Failing due to panics detected in logs"
    69   ${docker_compose} logs --no-color > /tmp/docker-compose.log
    70   exit 1
    71fi
    72
    73echo "generating code coverage"
    74${docker_compose} restart rekor-server
    75
    76if ! docker cp $(docker ps -aqf "name=rekor_rekor-server" -f "name=rekor-rekor-server"):go/rekor-server.cov /tmp/pkg-rekor-server.cov ; then
    77   # failed to copy code coverage report from server
    78   echo "Failed to retrieve server code coverage report"
    79   ${docker_compose} logs --no-color > /tmp/docker-compose.log
    80   exit 1
    81fi
    82
    83# merging coverage reports and filtering out /pkg/generated from final report
    84hack/tools/bin/gocovmerge /tmp/pkg-rekor-*.cov | grep -v "/pkg/generated/" > /tmp/pkg-rekor-merged.cov
    85echo "code coverage $(go tool cover -func=/tmp/pkg-rekor-merged.cov | grep -E '^total\:' | sed -E 's/\s+/ /g')"

View as plain text