From: Francis Dupont Date: Sun, 31 Dec 2017 16:48:28 +0000 (+0100) Subject: [5494] Fixed Cassandra support for macOS X-Git-Tag: trac5524_base^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb0d735628aefd6bca2acc11b73d1f66b45d1c40;p=thirdparty%2Fkea.git [5494] Fixed Cassandra support for macOS --- diff --git a/doc/devel/unit-tests.dox b/doc/devel/unit-tests.dox index ecaa04ffb4..c91d2849e7 100644 --- a/doc/devel/unit-tests.dox +++ b/doc/devel/unit-tests.dox @@ -263,7 +263,24 @@ local all postgres trust @subsection cqlUnitTestsPrerequisites Cassandra database - @todo: Describe steps necessary to set up Cassandra database suitable for running - unittests. - + @todo: Describe steps necessary to set up Cassandra database suitable + for running unittests. + + It seems this was enough: + + -# Launch cassandra if not running (-f for foreground) + @verbatim + % cassandra -f + @endverbatim + + The tool is cqlsh: + + -# Run the tool + @verbatim + % cqlsh + Connected to Test Cluster at 127.0.0.1:9042. + [cqlsh 5.0.1 | Cassandra 3.11.1 | CQL spec 3.4.4 | Native protocol v4] + Use HELP for help. + cqlsh> @endverbatim\n + */ diff --git a/src/bin/admin/admin-utils.sh b/src/bin/admin/admin-utils.sh index 80f5410306..464cc22ab7 100755 --- a/src/bin/admin/admin-utils.sh +++ b/src/bin/admin/admin-utils.sh @@ -128,7 +128,7 @@ cql_execute_script() { cql_version() { version=$(cql_execute "SELECT version, minor FROM schema_version" "$@") error=$? - version=$(echo "$version" | grep -A 1 "+" | grep -v "+" | tr -d ' ' | cut -d "|" -f 1-2 --output-delimiter=".") + version=$(echo "$version" | grep -A 1 "+" | grep -v "+" | tr -d ' ' | cut -d "|" -f 1-2 | tr "|" ".") echo "$version" return $error } diff --git a/src/bin/admin/kea-admin.in b/src/bin/admin/kea-admin.in index 7613dfafa6..d28697de0c 100644 --- a/src/bin/admin/kea-admin.in +++ b/src/bin/admin/kea-admin.in @@ -518,11 +518,11 @@ cql_dump() { fi # Parse and display header. - echo "$result" | head -n 2 | tail -n 1 | sed -e 's/\s*//g' | sed -e 's/|/,/g' > $dump_file + echo "$result" | head -n 2 | tail -n 1 | sed -e 's/[[:space:]]*//g' | sed -e 's/|/,/g' > $dump_file # Parse and display contents - done separately from header to allow sorting - # by address. - echo "$result" | tail -n +4 | head -n -2 | sed -e 's/\s*//g' | sed -e 's/|/,/g' | sort -r >> $dump_file + # by address. awk script replaces head -n -2 which is not portable. + echo "$result" | tail -n +4 | awk 'n>=2 { print a[n%2] } { a[n%2]=$0; n=n+1 }' | sed -e 's/[[:space:]]*//g' | sed -e 's/|/,/g' | sort -r >> $dump_file echo lease$dump_type successfully dumped to $dump_file exit 0 diff --git a/src/lib/dhcpsrv/cql_lease_mgr.h b/src/lib/dhcpsrv/cql_lease_mgr.h index 878f209393..abb34dd1f4 100644 --- a/src/lib/dhcpsrv/cql_lease_mgr.h +++ b/src/lib/dhcpsrv/cql_lease_mgr.h @@ -318,7 +318,7 @@ public: /// /// @throw isc::dhcp::DbOperationError An operation on the open database has /// failed. - virtual bool deleteLease(const isc::asiolink::IOAddress& addr); + virtual bool deleteLease(const isc::asiolink::IOAddress& addr) override; /// @brief Deletes all expired and reclaimed DHCPv4 leases. /// @@ -349,7 +349,7 @@ public: /// /// @param subnet_id identifier of the subnet /// @return number of leases removed. - virtual size_t wipeLeases4(const SubnetID& subnet_id); + virtual size_t wipeLeases4(const SubnetID& subnet_id) override; /// @brief Removed specified IPv6 leases. /// @@ -360,7 +360,7 @@ public: /// /// @param subnet_id identifier of the subnet /// @return number of leases removed. - virtual size_t wipeLeases6(const SubnetID& subnet_id); + virtual size_t wipeLeases6(const SubnetID& subnet_id) override; /// @brief Return backend type /// diff --git a/tools/Makefile.am b/tools/Makefile.am index 4be133f4a1..b18bd4facd 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -20,6 +20,6 @@ EXTRA_DIST = system_messages # Scripts for Cassandra support. Ultimately those scripts will have to be # incorporated in DataStax cpp-driver source tree, but until that happens, # let's keep them in Kea rpo -EXTRA_DIST += cql_config cql_config_defines.sh +EXTRA_DIST += cql_config cql_config_defines.sh.sample endif diff --git a/tools/cql_config b/tools/cql_config index 19a426a46e..fba61640aa 100755 --- a/tools/cql_config +++ b/tools/cql_config @@ -1,8 +1,14 @@ #!/bin/bash -DIR=$(readlink -f $0 | xargs dirname) + +if test `uname -s` = "Darwin"; then + DIR=$(stat -f %N $0 | xargs dirname) +else + DIR=$(readlink -f $0 | xargs dirname) +fi + if ! [ -f ${DIR}/cql_config_defines.sh ] || ! [ -x ${DIR}/cql_config_defines.sh ] then - echo "missing path configuration file for DataStax Cassandra (cql_config_defines.h)" + echo "missing path configuration file for DataStax Cassandra (cql_config_defines.sh)" exit 0 fi source ${DIR}/cql_config_defines.sh diff --git a/tools/cql_config_defines.sh b/tools/cql_config_defines.sh.sample similarity index 100% rename from tools/cql_config_defines.sh rename to tools/cql_config_defines.sh.sample