Brendon Jones's blog
Investigated boot ordering in sysvinit and systemd to try to fix a problem observed in one deployment where sometimes the amplet client is starting too soon and not having access to dns (and occasionally rabbitmq). Attempted some fixes and built new packages, but have yet to hear if the changes made any improvement.
Rewrote the icmp and dns tests to use libwandevent to manage sending and receiving probe packets, which brings them into line with many of the other tests and removes some code that may have had uncertain licensing. Should be able to factor out a lot more of the similarities between these simple tests (icmp, dns, tcpping) at a later date.
Lots of minor tidy ups, quietened some log messages that weren't very relevant. Updated sample configuration files, code documentation and some licensing.
Continued tidying up parts of the amplet2-client code that I had been meaning to look at for a while, but not had the time. Reworked some of the server handling to need less information passed around to configure interfaces, addresses etc, as this was already available in other ways. Made the way that the tests use this information a lot more consistent. Split some of the server connecting code into SSL vs non-SSL sections so that they could be more easily reused rather than duplicating a lot of work each time.
Spent too much time trying to determine why some very simple code was giving incorrect results when I removed debugging output. Compiling without optimisations would also fix it. Ended up changing the way I called it to stop the compiler optimising it out.
Investigated and replaced a few small sections of code that had come from various sources, with implementations using more compatible licenses.
Lots of small improvements to try to polish everything slightly. Quietened some warnings that were being printed during normal test operation. Tidied up some memory usage to make valgrind happier. Updated the amplet2 Debian packaging to fix a few warnings that lintian had thrown up. Removed or tidied up some portions of code that were no longer used, or had been mostly duplicated to get slightly different effects.
Spent some time trying to make the output from the standalone tests consistent with each other, and removing duplicated code involved in printing various parts of the usage statements that all tests share. Tidied up the getopt code around it as well, so that all the tests have a consistent ordering which should make it easier to add new options in the future.
Worked with Shane to install new amp server side packages on our websites that we maintain.
Fixed a heap of smaller bugs in the amplet2 client that had been ignored for a while, including making the sample skeleton tests work again, properly logging errors when failing to configure rabbitmq, and dealing with EADDRINUSE in test server code.
Removed some deprecated code and comments from the amplet2 client and rearranged source files to more sensible locations as part of a general tidy-up ahead of release. Double checked to confirm that the licenses of the libraries we use will allow us to do so in the way we want.
Built new Debian packages for netevmon, ampweb and ampy, ready for deployment next week.
Updated the control protocol for starting tests and servers to expect and report messages about success/failure, rather than simply closing the connection when things go wrong. This means that you can now get a log message informing you that you aren't allowed to perform the action rather instead of wondering why it didn't work. Also spent some time tidying up some of the confusion between controlling specific test instances and compared with the high level client control, and renaming functions to more clearly describe what they do.
Fixed up a few bugs around amplet packaging including removing lots of unused cruft from the Jessie init scripts. Fixed up a few bugs in ampweb, including some css issues that had been annoying me, and schedule last-modified times not being updated for certain change types. Schedule last-modified time is now tracked per site rather than per schedule item, which makes it easier to flag sites that need to fetch new configuration (especially for sites that have been removed from a mesh).
Spent the week working on parallelising the docker build system and adding support for armhf. I now have a script that will spin up a docker instance for each flavour of Debian/Ubuntu, download and install build dependencies, build the appropriate packages and copy them back into the host system.
I got standalone cross-compilation of armhf packages working within a single instance, but appear to have missed something when adding it to the rest of the build scripts - something is looking in the wrong paths for the dependencies. In the mean time it works fine inside the emulator, though is a little slow.
Tidied up a couple of issues encountered while installing Wheezy packages for the amp-web server components - eventing schema is now created at install time rather than run time and permissions are set correctly so that events can be fetched by the web user. Fixed the AS name parsing code to always return something sensible, after discovering that our data source had messed up many of the AS name fields, so we were using incomplete data.
Updated some of the server install instructions to match changes to packages and dependencies. Fixed the rabbitmq installation instructions to use their new keys.
Integrated the access control list with the control socket processing code, so now all connections are checked for valid permissions (start test servers, run tests remotely). I've got slightly stuck on making sure that failures are reported back properly rather than just failing, as it gets convoluted when a remotely started test needs to start a server elsewhere but lacks the server permissions.
Used the new docker build system to build Wheezy packages for the AMP server components. Haven't got it working in parallel, but it is still very useful to build in a clean environment to make sure dependencies are correctly recorded. Updated skeptic to use the new packages and ran into some issues (mostly permissions and non-packaged dependency related) that weren't encountered during previous rollouts on Jessie or test runs in a VM.
Spent some time finishing up the access control for amplet control connections and writing some basic unit tests. The lists all perform as expected, with more specific rules overriding less specific ones. The next step will be to integrate it into the control socket processing so that it gets checked when clients connect and issue commands.
Had a look at using docker to build Debian packages with some help from Brad. Got it working with the amplet2-client packages, looks like it could be pretty useful, especially making sure it's a clean build and only using explicitly defined dependencies. Had a bit of a look at spawning a bunch of shells and performing parallel builds across all Debian/Ubuntu flavours at once rather than doing it in serial. Got it mostly working but I'm not happy with the way I get the built packages on completion - how to trigger it and where to place them.
Spent some time writing some basic documentation about installing and configuring the server software to collect and display AMP data. Most aspects are covered at least briefly now.
Updated the ampweb packages to disable the default test user and to be slightly smarter about dealing with user configuration in general - the package now treats them as actual configuration files and so won't clobber them on install. Rebuilt the packages and pushed them out to the lamp server.
Started work on implementing some simple access control for the amplet client control interface, to limit who is allowed to run test servers or perform other control functions. This is the first step before I implement the ability to push schedules directly to clients.
Short week due to holidays and illness.
Made a few more fixes to the ampweb packages that were installed last week to help fix some issues we noticed during installation, including updating default configuration files to have more sensible values.
Spent some time updating documentation for the amplet client and writing man pages for some binaries that were missing them.