PT-1741 Migrated Go pt-mongo-tools to new driver

This commit is contained in:
Carlos Salguero
2019-08-02 11:53:39 -03:00
parent e3409c720f
commit c388bbc01c
34 changed files with 1791 additions and 1304 deletions

View File

@@ -0,0 +1,245 @@
#!/bin/bash
max_tries=45
sleep_secs=1
cp /rootCA.crt /tmp/rootCA.crt
cp /client.pem /tmp/client.pem
chmod 400 /tmp/rootCA.crt /tmp/client.pem
MONGODB_IP=127.0.0.1
MONGO_FLAGS="--quiet --host=${MONGODB_IP} --ssl --sslCAFile=/tmp/rootCA.crt --sslPEMKeyFile=/tmp/client.pem"
sleep $sleep_secs
/usr/bin/mongo --version
## Shard 1
tries=1
while [ $tries -lt $max_tries ]; do
/usr/bin/mongo ${MONGO_FLAGS} \
--port=${TEST_MONGODB_S1_PRIMARY_PORT} \
--eval='rs.initiate({
_id: "'${TEST_MONGODB_S1_RS}'",
version: 1,
members: [
{ _id: 0, host: "'${MONGODB_IP}':'${TEST_MONGODB_S1_PRIMARY_PORT}'", priority: 10 },
{ _id: 1, host: "'${MONGODB_IP}':'${TEST_MONGODB_S1_SECONDARY1_PORT}'", priority: 1 },
{ _id: 2, host: "'${MONGODB_IP}':'${TEST_MONGODB_S1_SECONDARY2_PORT}'", priority: 0, hidden: true, tags: { role: "backup" } }
]})' | tee /tmp/init-result.json
if [ $? == 0 ]; then
grep -q '"ok" : 1' /tmp/init-result.json
[ $? == 0 ] && rm -vf /tmp/init-result.json && break
fi
echo "# INFO: retrying rs.initiate() on ${TEST_MONGODB_S1_RS} in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries for ${TEST_MONGODB_S1_RS}, exiting"
exit 1
fi
echo "# INFO: replset ${TEST_MONGODB_S1_RS} is initiated"
## Shard 2
tries=1
while [ $tries -lt $max_tries ]; do
/usr/bin/mongo ${MONGO_FLAGS} \
--port=${TEST_MONGODB_S2_PRIMARY_PORT} \
--eval='rs.initiate({
_id: "'${TEST_MONGODB_S2_RS}'",
version: 1,
members: [
{ _id: 0, host: "'${MONGODB_IP}':'${TEST_MONGODB_S2_PRIMARY_PORT}'", priority: 10 },
{ _id: 1, host: "'${MONGODB_IP}':'${TEST_MONGODB_S2_SECONDARY1_PORT}'", priority: 1 },
{ _id: 2, host: "'${MONGODB_IP}':'${TEST_MONGODB_S2_SECONDARY2_PORT}'", priority: 0, hidden: true, tags: { role: "backup" } }
]})' | tee /tmp/init-result.json
if [ $? == 0 ]; then
grep -q '"ok" : 1' /tmp/init-result.json
[ $? == 0 ] && rm -vf /tmp/init-result.json && break
fi
echo "# INFO: retrying rs.initiate() on ${TEST_MONGODB_S2_RS} in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries for ${TEST_MONGODB_S2_RS}, exiting"
exit 1
fi
echo "# INFO: replset ${TEST_MONGODB_S2_RS} is initiated"
## Configsvr replset
tries=1
while [ $tries -lt $max_tries ]; do
/usr/bin/mongo ${MONGO_FLAGS} \
--port=${TEST_MONGODB_CONFIGSVR1_PORT} \
--eval='rs.initiate({
_id: "'${TEST_MONGODB_CONFIGSVR_RS}'",
configsvr: true,
version: 1,
members: [
{ _id: 0, host: "'${MONGODB_IP}':'${TEST_MONGODB_CONFIGSVR1_PORT}'" }
]
})'
[ $? == 0 ] && break
echo "# INFO: retrying rs.initiate() for configsvr in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries, exiting"
exit 1
fi
echo "# INFO: sharding configsvr is initiated"
## Replica set 3 (non sharded)
tries=1
while [ $tries -lt $max_tries ]; do
/usr/bin/mongo ${MONGO_FLAGS} \
--port=${TEST_MONGODB_S3_PRIMARY_PORT} \
--eval='rs.initiate({
_id: "'${TEST_MONGODB_S3_RS}'",
version: 1,
members: [
{ _id: 0, host: "'${MONGODB_IP}':'${TEST_MONGODB_S3_PRIMARY_PORT}'", priority: 10 },
{ _id: 1, host: "'${MONGODB_IP}':'${TEST_MONGODB_S3_SECONDARY1_PORT}'", priority: 1 },
{ _id: 2, host: "'${MONGODB_IP}':'${TEST_MONGODB_S3_SECONDARY2_PORT}'", priority: 0, hidden: true, tags: { role: "backup" } }
]})' | tee /tmp/init3-result.json
if [ $? == 0 ]; then
grep -q '"ok" : 1' /tmp/init3-result.json
[ $? == 0 ] && rm -vf /tmp/init3-result.json && break
fi
echo "# INFO: retrying rs.initiate() on ${TEST_MONGODB_S3_RS} in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries for ${TEST_MONGODB_S3_RS}, exiting"
exit 1
fi
echo "# INFO: replset ${TEST_MONGODB_S3_RS} is initiated"
for MONGODB_PORT in ${TEST_MONGODB_S1_PRIMARY_PORT} ${TEST_MONGODB_S2_PRIMARY_PORT} ${TEST_MONGODB_CONFIGSVR1_PORT}; do
tries=1
while [ $tries -lt $max_tries ]; do
ISMASTER=$(/usr/bin/mongo ${MONGO_FLAGS} \
--port=${MONGODB_PORT} \
--eval='printjson(db.isMaster().ismaster)' 2>/dev/null)
[ "$ISMASTER" == "true" ] && break
echo "# INFO: retrying db.isMaster() check on 127.0.0.1:${MONGODB_PORT} in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries, exiting"
exit 1
fi
done
echo "# INFO: all replsets have primary"
for MONGODB_PORT in 27017 ${TEST_MONGODB_S1_PRIMARY_PORT} ${TEST_MONGODB_S2_PRIMARY_PORT} ${TEST_MONGODB_CONFIGSVR1_PORT} ${TEST_MONGODB_S3_PRIMARY_PORT}; do
echo "PORT $MONGODB_PORT"
tries=1
while [ $tries -lt $max_tries ]; do
/usr/bin/mongo ${MONGO_FLAGS} \
--port=${MONGODB_PORT} \
--eval='db.createUser({
user: "'${TEST_MONGODB_ADMIN_USERNAME}'",
pwd: "'${TEST_MONGODB_ADMIN_PASSWORD}'",
roles: [
{ db: "admin", role: "root" }
]
})' \
admin
if [ $? == 0 ]; then
echo "# INFO: added admin user to 127.0.0.1:${MONGODB_PORT}"
/usr/bin/mongo ${MONGO_FLAGS} \
--username=${TEST_MONGODB_ADMIN_USERNAME} \
--password=${TEST_MONGODB_ADMIN_PASSWORD} \
--port=${MONGODB_PORT} \
--eval='db.createUser({
user: "'${TEST_MONGODB_USERNAME}'",
pwd: "'${TEST_MONGODB_PASSWORD}'",
roles: [
{ db: "admin", role: "backup" },
{ db: "admin", role: "clusterMonitor" },
{ db: "admin", role: "restore" },
{ db: "config", role: "read" },
{ db: "test", role: "readWrite" }
]
})' \
admin
[ $? == 0 ] && echo "# INFO: added test user to 127.0.0.1:${MONGODB_PORT}" && break
fi
echo "# INFO: retrying db.createUser() on 127.0.0.1:${MONGODB_PORT} in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
done
echo "# INFO: all replsets have auth user(s)"
shard1=${TEST_MONGODB_S1_RS}'/127.0.0.1:'${TEST_MONGODB_S1_PRIMARY_PORT}',127.0.0.1:'${TEST_MONGODB_S1_SECONDARY1_PORT}
shard2=${TEST_MONGODB_S2_RS}'/127.0.0.1:'${TEST_MONGODB_S2_PRIMARY_PORT}',127.0.0.1:'${TEST_MONGODB_S2_SECONDARY1_PORT}
for shard in $shard1 $shard2; do
tries=1
while [ $tries -lt $max_tries ]; do
ADDSHARD=$(/usr/bin/mongo ${MONGO_FLAGS} \
--username=${TEST_MONGODB_ADMIN_USERNAME} \
--password=${TEST_MONGODB_ADMIN_PASSWORD} \
--port=${TEST_MONGODB_MONGOS_PORT} \
--eval='printjson(sh.addShard("'$shard'").ok)' \
admin 2>/dev/null)
[ $? == 0 ] && [ "$ADDSHARD" == "1" ] && break
echo "# INFO: retrying sh.addShard() check for '$shard' in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries for '$shard', exiting"
exit 1
fi
echo "# INFO: added shard: $shard"
done
tries=1
while [ $tries -lt $max_tries ]; do
ENABLESHARDING=$(/usr/bin/mongo ${MONGO_FLAGS} \
--username=${TEST_MONGODB_ADMIN_USERNAME} \
--password=${TEST_MONGODB_ADMIN_PASSWORD} \
--port=${TEST_MONGODB_MONGOS_PORT} \
--eval='sh.enableSharding("test").ok' \
admin 2>/dev/null)
[ $? == 0 ] && [ "$ENABLESHARDING" == "1" ] && break
echo "# INFO: retrying sh.enableSharding(\"test\") check in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries for '$shard', exiting"
exit 1
fi
echo "# INFO: \"test\" database is now sharded"
tries=1
while [ $tries -lt $max_tries ]; do
SHARDCOL=$(/usr/bin/mongo ${MONGO_FLAGS} \
--username=${TEST_MONGODB_ADMIN_USERNAME} \
--password=${TEST_MONGODB_ADMIN_PASSWORD} \
--port=${TEST_MONGODB_MONGOS_PORT} \
--eval='sh.shardCollection("test.test", {_id: 1}).ok' \
admin 2>/dev/null)
[ $? == 0 ] && [ "$ENABLESHARDING" == "1" ] && break
echo "# INFO: retrying sh.shardCollection(\"test.test\", {_id: 1}) check in $sleep_secs secs (try $tries/$max_tries)"
sleep $sleep_secs
tries=$(($tries + 1))
done
if [ $tries -ge $max_tries ]; then
echo "# ERROR: reached max tries $max_tries for '$shard', exiting"
exit 1
fi
echo "# INFO: \"test.test\" collection is now sharded"