CPAN Testers 2.0 and the metabase-relayd
Big kudos to all concerned
When I met David Golden and Ricardo Signes at the Birmingham QA Hackathon in 2009 and discussions were happening about Metabase and how submissions would be made to it, I'd expressed concern about the weight of the dependencies that would be required to make Metabase submissions.
I came up with the idea of a Metabase relay server, something that would act as an intermediate between smokers and the Metabase. The smokers would use an very lightweight transport to submit reports to the relay, which would then forward the requests on to the Metabase server.
And that was as far as it went until the beta testing of Metabase started. I wrote Test::Reporter::Transport::Socket which would be installed on the smoker. This takes as options the address of a relay server and the TCP port to connect to. The data is passed using Storable's nfreeze function and unfrozen at the relay.
The relay server has a SQLite database backend which stores reports to be submitted, if transmission fails it will requeue and try again until submission succeeds (this is in contrast to Test::Reporter::Transport::Metabase which does not have a resubmission mechanism)
So using it. On each of the smokers install Test::Reporter::Transport::Socket.
For CPAN::Reporter add following line to ~/.cpanreporter/config.ini
transport = Socket host my.relay.server port 8080
For CPANPLUS it is slightly harder, you will have to edit the CPANPLUS config file and find the setting for cpantest_reporter_args or you could run this script to set the appropriate values for you.
On what will be your relay server simply install App::Metabase::Relayd, which should pull in all the required dependencies.
metabase-relayd uses the directory ~/.metabase for finding its configuration file relayd and for storing the database file, etc.
Unless you are an existing CPAN Tester then run metabase-profile to generate yourself a profile id file and move the resultant file into ~/.metabase.
Create a relayd file in ~/.metabase
address=192.168.1.87,127.0.0.1 port=8080 idfile=/home/chris/.metabase/metabase_id.json dbfile=/home/chris/.metabase/relay.db url=https://metabase.cpantesters.org/beta/ debug=1 multiple=1
This is my relayd adjust to taste
Then simply start metabase-relayd