Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MYST-569 get rid of build time env variables #272

Merged
merged 5 commits into from Jul 3, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 0 additions & 2 deletions .env_example

This file was deleted.

5 changes: 0 additions & 5 deletions .travis.yml
Expand Up @@ -18,11 +18,6 @@ cache:
directories:
- "$CACHE_ROOT_DIR"

before_install:
- rm -f .env
- echo "MYSTERIUM_API_URL=$MYSTERIUM_API_URL" >> .env
- echo "NATS_SERVER_IP=$NATS_SERVER_IP" >> .env

install:
- source bin/travis_scripts/setup_tools_dir.sh $BUILD_TOOLS_PATH
- source bin/travis_scripts/ensure_glide.sh $BUILD_TOOLS_PATH "v0.13.1"
Expand Down
1 change: 0 additions & 1 deletion bin/client_build
Expand Up @@ -17,7 +17,6 @@
#> readelf -d build/client/mysterium_client

source bin/helpers/functions.sh
source bin/helpers/load_environment.sh

export GOOS=${GOOS:=`go env GOHOSTOS`}
export GOARCH=${GOARCH:=`go env GOHOSTARCH`}
Expand Down
4 changes: 1 addition & 3 deletions bin/client_run
@@ -1,9 +1,7 @@
#!/bin/bash

source bin/helpers/load_run_environment.sh

sudo ./build/client/mysterium_client \
--config-dir=bin/client_package/config \
--runtime-dir=build/client \
$DISCOVERY_OPTION\
--localnet \
$@
2 changes: 0 additions & 2 deletions bin/helpers/functions.sh
Expand Up @@ -2,8 +2,6 @@

# Map environment variables to flags for Golang linker's -ldflags usage
function get_linker_ldflags {
echo -n "-X 'github.com/mysterium/node/cmd.MysteriumAPIURL=${MYSTERIUM_API_URL}' "
echo -n "-X 'github.com/mysterium/node/cmd/commands/server.natsServerIP=${NATS_SERVER_IP}' "
[ -n "$BRANCH" ] && echo -n "-X 'github.com/mysterium/node/version.BuildBranch=${BRANCH}' "
[ -n "$COMMIT" ] && echo -n "-X 'github.com/mysterium/node/version.BuildCommit=${COMMIT}' "
[ -n "$BUILD_NUMBER" ] && echo -n "-X 'github.com/mysterium/node/version.BuildNumber=${BUILD_NUMBER}' "
Expand Down
7 changes: 0 additions & 7 deletions bin/helpers/load_environment.sh

This file was deleted.

8 changes: 0 additions & 8 deletions bin/helpers/load_run_environment.sh

This file was deleted.

33 changes: 33 additions & 0 deletions bin/localnet/docker-compose.yml
@@ -0,0 +1,33 @@
version: '3'
services:

broker:
image: nats
expose:
- 4222
- 8222

#infrastructure - centralized api and db
db:
image: percona:5.7
restart: always
expose:
- 3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: myst_api
MYSQL_USER: myst_api
MYSQL_PASSWORD: myst_api

discovery:
image: mysteriumnetwork/mysterium-api:0.1.12
expose:
- 80
environment:
APP_PORT: 80
DB_HOST: db
DB_NAME: myst_api
DB_USER: myst_api
DB_PASSWORD: myst_api
depends_on:
- db
60 changes: 60 additions & 0 deletions bin/localnet/functions.sh
@@ -0,0 +1,60 @@
#!/usr/bin/env bash

source bin/helpers/output.sh


PROJECT_FILE="bin/localnet/docker-compose.yml"

setupDockerComposeCmd() {
projectName=$1; shift;

projectFiles=("-f ${PROJECT_FILE}")

for extensionFile in "$@"; do
projectFiles=("${projectFiles[@]}" "-f ${extensionFile}")
done

dockerComposeCmd="docker-compose ${projectFiles[@]} -p $projectName"
}

setup () {

setupDockerComposeCmd "$@"
echo "Setting up: $projectName"

${dockerComposeCmd} up -d db # start database first - it takes about 10 sec untils db startsup, and otherwise db migration fails
if [ ! $? -eq 0 ]; then
print_error "Db startup failed"
cleanup "$@"
exit 1
fi

echo "Waiting for db to become up"
while ! ${dockerComposeCmd} exec db mysqladmin ping --protocol=TCP --silent; do
echo -n "."
sleep 1
done
sleep 2 #even after successful TCP connection we still hit db not ready yet sometimes
echo "Database is up"

${dockerComposeCmd} run --entrypoint bin/db-upgrade discovery
if [ ! $? -eq 0 ]; then
print_error "Db migration failed"
cleanup "$@"
exit 1
fi

${dockerComposeCmd} up -d broker discovery
if [ ! $? -eq 0 ]; then
print_error "Starting built docker images failed"
cleanup "$@"
exit 1
fi
}

cleanup () {
setupDockerComposeCmd "$@"

echo "Cleaning up: $projectName"
${dockerComposeCmd} down --remove-orphans
}
11 changes: 11 additions & 0 deletions bin/localnet/publish-ports.yml
@@ -0,0 +1,11 @@
version: '3'
services:

broker:
ports:
- 4222:4222
- 8222:4222

discovery:
ports:
- 80:80
7 changes: 7 additions & 0 deletions bin/localnet/setup.sh
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

set -e

source bin/localnet/functions.sh

setup "localnet" "bin/localnet/publish-ports.yml"
7 changes: 7 additions & 0 deletions bin/localnet/teardown.sh
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

set -e

source bin/localnet/functions.sh

cleanup "localnet"
1 change: 0 additions & 1 deletion bin/server_build
Expand Up @@ -17,7 +17,6 @@
#> readelf -d build/server/mysterium_server

source bin/helpers/functions.sh
source bin/helpers/load_environment.sh

export GOOS=${GOOS:=`go env GOHOSTOS`}
export GOARCH=${GOARCH:=`go env GOHOSTARCH`}
Expand Down
5 changes: 1 addition & 4 deletions bin/server_run
@@ -1,10 +1,7 @@
#!/bin/bash

source bin/helpers/load_run_environment.sh

sudo ./build/server/mysterium_server \
--config-dir=bin/server_package/config \
--runtime-dir=build/server \
$DISCOVERY_OPTION \
$BROKER_OPTION \
--localnet \
$@
62 changes: 13 additions & 49 deletions bin/test_e2e
@@ -1,66 +1,30 @@
#!/usr/bin/env bash

source bin/helpers/output.sh
source bin/localnet/functions.sh

PROJECT_NAME="node_e2e_test"
PROJECT_FILE="e2e/docker-compose.yml"
projectName="node_e2e_test"

dockerComposeCmd="docker-compose -f $PROJECT_FILE -p $PROJECT_NAME"
setup $projectName "e2e/docker-compose.yml"

setup () {
${dockerComposeCmd} up -d db # start database first - it takes about 10 sec untils db startsup, and otherwise db migration fails
if [ ! $? -eq 0 ]; then
print_error "Db startup failed"
cleanup
exit 1
fi

${dockerComposeCmd} build
if [ ! $? -eq 0 ]; then
print_error "Building docker images failed"
cleanup
exit 1
fi

echo "Waiting for db to become up"
while ! ${dockerComposeCmd} exec db mysqladmin ping --protocol=TCP --silent; do
echo -n "."
sleep 1
done
echo "Database is up"

${dockerComposeCmd} run --entrypoint bin/db-upgrade discovery
if [ ! $? -eq 0 ]; then
print_error "Db migration failed"
cleanup
exit 1
fi

${dockerComposeCmd} up -d
if [ ! $? -eq 0 ]; then
print_error "Starting built docker images failed"
cleanup
exit 1
fi
${dockerComposeCmd} logs -f > e2e_tests.log &
}

cleanup () {
echo "Cleaning up"
${dockerComposeCmd} down
}
$dockerComposeCmd build && $dockerComposeCmd up -d
if [ ! $? -eq 0 ]
then
print_error "Image building failed"
cleanup $projectName
exit 1
fi


setup
$dockerComposeCmd logs -f > e2e_tests.log &

go test -v ./e2e/... -args --tequila.host=localhost --tequila.port=4052
if [ ! $? -eq 0 ]
then
print_error "Tests failed"
cleanup
cleanup $projectName
exit 1
fi

print_success "Tests passed"
cleanup
cleanup $projectName
exit 0
20 changes: 19 additions & 1 deletion cmd/commands/client/command_client.go
Expand Up @@ -41,9 +41,10 @@ import (

// NewCommand function creates new client command by given options
func NewCommand(options CommandOptions) *Command {
networkDefinition := getNetworkDefinition(options)
return NewCommandWith(
options,
server.NewClient(options.DiscoveryAPIAddress),
server.NewClient(networkDefinition.DiscoveryAPIAddress),
)
}

Expand Down Expand Up @@ -176,3 +177,20 @@ func (cmd *Command) Kill() error {

return nil
}

// TODO this function can be aligned with server function when client and server options will merge into
func getNetworkDefinition(options CommandOptions) metadata.NetworkDefinition {
network := metadata.DefaultNetwork

switch {
case options.Localnet:
network = metadata.LocalnetDefinition
}

//override defined values one by one from options
if options.DiscoveryAPIAddress != metadata.DefaultNetwork.DiscoveryAPIAddress {
network.DiscoveryAPIAddress = options.DiscoveryAPIAddress
}

return network
}
12 changes: 10 additions & 2 deletions cmd/commands/client/options.go
Expand Up @@ -20,6 +20,7 @@ package client
import (
"flag"
"github.com/mysterium/node/cmd"
"github.com/mysterium/node/metadata"
"path/filepath"
)

Expand All @@ -39,10 +40,10 @@ type CommandOptions struct {
LicenseConditions bool

DiscoveryAPIAddress string
BrokerAddress string
IpifyUrl string

LocationDatabase string
Localnet bool
}

// ParseArguments parses CLI flags and adds to CommandOptions structure
Expand Down Expand Up @@ -114,7 +115,7 @@ func ParseArguments(args []string) (options CommandOptions, err error) {
flags.StringVar(
&options.DiscoveryAPIAddress,
"discovery-address",
cmd.MysteriumAPIURL,
metadata.DefaultNetwork.DiscoveryAPIAddress,
"Address (URL form) of discovery service",
)

Expand All @@ -132,6 +133,13 @@ func ParseArguments(args []string) (options CommandOptions, err error) {
"Service location autodetect database of GeoLite2 format e.g. http://dev.maxmind.com/geoip/geoip2/geolite2/",
)

flags.BoolVar(
&options.Localnet,
"localnet",
false,
"Defines network configuration which expects localy deployed broker and discovery services",
)

err = flags.Parse(args[1:])
if err != nil {
return
Expand Down