Skip to content
This repository was archived by the owner on Jul 8, 2022. It is now read-only.
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 69 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,74 @@ before_install:
- wget https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip && unzip build-wrapper-linux-x86.zip

before_script:
- docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=root -d tangocs/mysql:9.2.2 --sql-mode=""
- CONTAINER=$(docker run --name tango_cs -e TANGO_HOST=127.0.0.1:10000 -e MYSQL_HOST=mysql_db:3306 -e MYSQL_USER=tango -e MYSQL_PASSWORD=tango -e MYSQL_DATABASE=tango --link mysql_db:mysql_db -d tangocs/tango-cs:latest)
- IPADDR=$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' $CONTAINER)
- TANGO_HOST=${IPADDR}:10000
- >
docker run
--rm
--name mysql_db
-e MYSQL_ROOT_PASSWORD=root
-e MYSQL_INITDB_SKIP_TZINFO=1
-d
tangocs/mysql:9.2.2
--sql-mode=""
--innodb=OFF
--default-storage-engine=MyISAM
- >
docker run
--rm
--name mysql_db2
-e MYSQL_ROOT_PASSWORD=root
-e MYSQL_INITDB_SKIP_TZINFO=1
-d
tangocs/mysql:9.2.2
--sql-mode=""
--innodb=OFF
--default-storage-engine=MyISAM
- >
docker run
--rm
--name tango_cs
-e TANGO_HOST=127.0.0.1:10000
-e MYSQL_HOST=mysql_db:3306
-e MYSQL_USER=tango
-e MYSQL_PASSWORD=tango
-e MYSQL_DATABASE=tango
--link mysql_db:mysq_db
-d
tangocs/tango-cs:latest
- >
docker run
--rm
--name tango_cs2
-e TANGO_HOST=127.0.0.1:10000
-e MYSQL_HOST=mysql_db2:3306
-e MYSQL_USER=tango
-e MYSQL_PASSWORD=tango
-e MYSQL_DATABASE=tango
--link mysql_db2:mysq_db2
-d
tangocs/tango-cs:latest
- TANGO_HOST_IP=$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tango_cs)
- TANGO_HOST_IP2=$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tango_cs2)
- TANGO_HOST=${TANGO_HOST_IP}:10000
- docker build --build-arg APP_UID=$(id -u) --build-arg APP_GID=$(id -g) -t cpp_tango .travis/${OS_TYPE}
- docker run --name cpp_tango -e TANGO_HOST=${TANGO_HOST} -e BINTRAY_USER_NAME=tango-ci -e BINTRAY_API_KEY=${CI_BINTRAY_API_KEY} -e COVERALLS_REPO_TOKEN=${COVERALLS_REPO_TOKEN} --link tango_cs:tango_cs -v `pwd`:/home/tango/src -v `pwd`/idl:/home/tango/idl -v `pwd`/cppzmq:/home/tango/cppzmq -v `pwd`/coveralls-cmake:/home/tango/coveralls-cmake -v `pwd`/build-wrapper-linux-x86:/home/tango/build-wrapper-linux-x86 -dit cpp_tango
- >
docker run
--rm
--name cpp_tango
-e TANGO_HOST=${TANGO_HOST}
-e TANGO_HOST2=${TANGO_HOST_IP2}:10000
-e BINTRAY_USER_NAME=tango-ci
-e BINTRAY_API_KEY=${CI_BINTRAY_API_KEY}
-e COVERALLS_REPO_TOKEN=${COVERALLS_REPO_TOKEN}
--link tango_cs
--link tango_cs2
-v `pwd`:/home/tango/src
-v `pwd`/idl:/home/tango/idl
-v `pwd`/cppzmq:/home/tango/cppzmq
-v `pwd`/coveralls-cmake:/home/tango/coveralls-cmake
-v `pwd`/build-wrapper-linux-x86:/home/tango/build-wrapper-linux-x86
-dit
cpp_tango
- .travis/install_tango_idl.sh
- (test ${STOCK_CPPZMQ} = "OFF" && .travis/install_cppzmq.sh) || true
#work around gcov ignored by sonar
Expand All @@ -67,8 +129,5 @@ deploy:

after-script:
- docker stop cpp_tango
- docker rm cpp_tango
- docker stop tango_cs
- docker rm tango_cs
- docker stop mysql_db
- docker rm mysql_db
- docker stop tango_cs tango_cs2
- docker stop mysql_db mysql_db2
78 changes: 50 additions & 28 deletions cpp_test_suite/environment/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,58 @@

echo "Setup test environment"

#run mysql-tango docker
docker run --name mysql_db \
-e MYSQL_ROOT_PASSWORD=root \
-d tangocs/mysql:9.2.2 --sql-mode=""

#run tango-cs docker
CONTAINER=$(docker run --name tango_cs \
-p 10000:10000 \
-e TANGO_HOST=127.0.0.1:10000 \
-e MYSQL_HOST=mysql_db:3306 \
-e MYSQL_USER=tango \
-e MYSQL_PASSWORD=tango \
-e MYSQL_DATABASE=tango \
--link mysql_db:mysql_db \
-d tangocs/tango-cs:latest)

echo "CONTAINER=$CONTAINER"

IPADDR=$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' $CONTAINER)
#export TANGO_HOST
TANGO_HOST=$IPADDR:10000
function run_mysql_container {
docker run \
--rm \
--name $1 \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_INITDB_SKIP_TZINFO=1 \
-d \
tangocs/mysql:9.2.2 \
--sql-mode="" \
--innodb=OFF \
--default-storage-engine=MyISAM
}

function run_tango_container {
docker run \
--rm \
--name $1 \
-e TANGO_HOST=127.0.0.1:10000 \
-e MYSQL_HOST=$2:3306 \
-e MYSQL_USER=tango \
-e MYSQL_PASSWORD=tango \
-e MYSQL_DATABASE=tango \
--link $2:$2 \
-d \
tangocs/tango-cs:latest
}

run_mysql_container mysql_db
run_mysql_container mysql_db2
run_tango_container tango_cs mysql_db
run_tango_container tango_cs2 mysql_db2

IPADDR=$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tango_cs)
IPADDR2=$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tango_cs2)

export TANGO_HOST=$IPADDR:10000
export TANGO_HOST2=$IPADDR2:10000

echo "TANGO_HOST=$TANGO_HOST"
export TANGO_HOST

echo "Create tango_host file"
echo "#!/bin/bash" > tango_host
echo "export TANGO_HOST=$TANGO_HOST" >> tango_host

echo "Wait till tango-cs is online"
#TODO notification?
sleep 30
cat << EOF > tango_host
#!/bin/bash
export TANGO_HOST=$TANGO_HOST
export TANGO_HOST2=$TANGO_HOST2
EOF

#ctest
echo "Wait till tango-cs is online"
if hash tango_admin 2>/dev/null; then
tango_admin --ping-database 30
TANGO_HOST=$TANGO_HOST2 tango_admin --ping-database 30
else
sleep 30
fi
12 changes: 3 additions & 9 deletions cpp_test_suite/environment/shutdown.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
#!/usr/bin/env bash

echo "Shutdown test environment"

#kill tango-cs docker
docker stop tango_cs
docker rm tango_cs

#kill mysql-tango docker
docker stop mysql_db
docker rm mysql_db
docker stop tango_cs tango_cs2
docker stop mysql_db mysql_db2

echo "Revert tango_host file"
echo "TANGO_HOST=$TANGO_HOST"
echo "#!/bin/bash" > tango_host
echo "export TANGO_HOST=$TANGO_HOST" >> tango_host
echo "export TANGO_HOST=$TANGO_HOST" >> tango_host
33 changes: 33 additions & 0 deletions cpp_test_suite/new_tests/cxx_group.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -827,6 +827,39 @@ class GroupTestSuite: public CxxTest::TestSuite
CxxTest::TangoPrinter::restore_unset("double_attr_value");
}

/* Verifies that a group can contain devices from a remote TANGO_HOST
* (a Tango instance different from client's default TANGO_HOST).
* An issue was reported when resolving names containing wildcards. */

void test_use_devices_from_remote_tango_host()
{
const std::string original_tango_host = std::getenv("TANGO_HOST");
const std::string external_tango_host = std::getenv("TANGO_HOST2");

const bool force_update = true;

TS_ASSERT_EQUALS(0, setenv("TANGO_HOST", external_tango_host.c_str(), force_update));
ApiUtil::instance()->cleanup();

Group group("group");
group.add("tango://" + original_tango_host + "/" + device1_name + "*");

GroupCmdReplyList command_results = group.command_inout("State");
GroupCmdReply command_result = command_results[0];

TS_ASSERT(not command_results.has_failed());
TS_ASSERT_EQUALS(1u, command_results.size());

TS_ASSERT(not command_result.has_failed());

DevState state;
TS_ASSERT(command_result >> state);
TS_ASSERT_EQUALS(ON, state);

TS_ASSERT_EQUALS(0, setenv("TANGO_HOST", original_tango_host.c_str(), force_update));
ApiUtil::instance()->cleanup();
}

};
#undef cout
#endif // GroupTestSuite_h
Loading