Andrei Pavel [Wed, 14 Dec 2016 14:34:21 +0000 (16:34 +0200)]
Various changes to Makefile.am
report-cpp-coverage wasn't working because of a syntax error
Added coverage target to .NOTPARALLEL to run unit tests and only then build reports.
Fixed cppcheck.
Andrei Pavel [Wed, 14 Dec 2016 13:59:00 +0000 (15:59 +0200)]
Cassandra Host Data Source stress test
It is part of the generic_host_data_source_unittest.cc, able to be
implemented for other HDS as well. It executes INSERT statements and
a certain SELECT statement which Cassandra struggles in performance
with since it has to do two queries instead of a join. All statement
executions are timed and repeated on an increasingly number of hosts.
It is placed last and DISABLED_ as you don't want to run this during
a usual make check.
Andrei Pavel [Wed, 14 Dec 2016 13:54:32 +0000 (15:54 +0200)]
Cassandra Host Data Source
Added src/share/database/scripts/cql/upgrade_1.0_to_2.0.sh to include host_reservations table in Cassandra.
Updated documentation to indicate that Cassandra now supports host reservations.
Added src/lib/dhcpsrv/cql_host_data_source.cc and cql_host_data_source.h.
Fixed a bug in CfgOption::mergeInternal() where formatted_value_ was not taken into consideration when merging, this is needed for merging the denormalized results on host retrieval in Cassandra. The method is not used elsewhere so there is no regression impact.
Added Cassandra support in HostDataSourceFactory.
Implemented a todo in mysql_host_data_source.cc
Added cql_host_data_source_unittest.cc
Functionality that Cassandra is not capable of like ORDER BY clause is
adjusted in generic_host_data_source_unittest.cc.
Andrei Pavel [Wed, 14 Dec 2016 12:47:57 +0000 (14:47 +0200)]
Cassandra update
Replaced unrecommended backticks with $() in cql_version() in bash scripts.
*_execute() and *_execute_script() functions from src/bin/admin/admin-utils.sh now pass the parameters to the underlying backend binary whenever they are given rather than when there are 2 or more.
Corrected cql_version() return error in src/bin/admin/admin-utils.sh.
Removed redundant "USE" from cql_init() in src/bin/admin/kea-admin.in.
Inserted a newline in src/bin/admin/tests/Makefile.am to separate unrelated targets.
Style changes in cql_*_test() functions in src/bin/admin/tests/cql_tests.sh.in.
src/bin/admin/tests/dhcpdb_create_1.0.cql:
"perfromance" typo
Added comment headers
Added index on expire since it is used in WHERE clauses (further performance testing may be required)
Removed dhcp4_options and dhcp6_options table since they are not required for Cassandra
Added DROP INDEX in src/share/database/scripts/cql/dhcpdb_drop.cql.
Added sql_common.h
Added cql_exchange.h and cql_exchange.cc which mediate communication with Cassandra.
Added cql_lease_mgr.h and cql_lease_mgr.cc
Parameterized reconnect-wait-time, connect-timeout, request-timeout, tcp-keepalive, tcp-nodelay for Cassandra in kea.conf. Changes are in src/lib/dhcpsrv/cql_connection.cc and src/lib/dhcpsrv/parsers/dbaccess_parser.cc.
Reformated x != NULL into !x as specified in the Kea style guidelines
src/lib/dhcpsrv/cql_connection.cc:
Added range check for port
Added CqlConnection:setConsistency
Added CqlConnection::startTransaction which is a noop
Added CqlTransaction method implementations.
Corrected ending brace of namespace declaration, it doesn't need semicolon.
src/lib/dhcpsrv/cql_connection.h:
Added explicit on CqlConnection constructor. Unlikely that this class will ever be derived, but it's good practice.
Changed some comments.
Added CqlTransaction class definition.
src/lib/dhcpsrv/cql_lease_mgr.cc:
Formatted the entire code.
Changed data types to cass_ types.
Added some log messages.
Moved structs, enums and typedefs from src/lib/dhcpsrv/lease_mgr.h to src/lib/dhcpsrv/sql_common.h
Added some missing tests in src/lib/dhcpsrv/tests/cql_lease_mgr_unittest.cc
Tomek Mrugalski [Mon, 12 Dec 2016 13:59:57 +0000 (14:59 +0100)]
[5036] Changes after review:
- clarified JSON usage in admin guide (True/False not allowed)
- fixed incorrect reference to hosts4-storage
- clarified that empty mac-sources entry is not allowed
- added extra text about syntactic contexts
- corrected several typos
[5046] kea-dhcp6 now implements set-config command
src/bin/dhcp6/ctrl_dhcp6_srv.h
src/bin/dhcp6/ctrl_dhcp6_srv.cc
ControlledDhcpv6Srv::commandSetConfigHandler() - new method to process
the set-config command.
ControlledDhcpv6Srv::processCommand() - call new set-config handler
ControlledDhcpv6Srv::processConfig() - added logic to apply logging
and commit configuration after successful reconfig
ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port) - added registration
of set-config command
- SimpleParser concept implemented
- Converted 4 parsers (option data, option data list, option defintion,
option definition list)
- updated unit-tests
- converted other parsers (HostReservationParser{4,6}, ClientClassDefParser)
to use those new parsers
- converted kea-dhcp{4,6} to use those new parsers