at 18.03-beta 4.0 kB view raw
1# Test ensures buildbot master comes up correctly and workers can connect 2 3import ./make-test.nix ({ pkgs, ... } : { 4 name = "buildbot"; 5 6 nodes = { 7 bbmaster = { config, pkgs, ... }: { 8 services.buildbot-master = { 9 enable = true; 10 package = pkgs.buildbot-full; 11 12 # NOTE: use fake repo due to no internet in hydra ci 13 factorySteps = [ 14 "steps.Git(repourl='git://gitrepo/fakerepo.git', mode='incremental')" 15 "steps.ShellCommand(command=['bash', 'fakerepo.sh'])" 16 ]; 17 changeSource = [ 18 "changes.GitPoller('git://gitrepo/fakerepo.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)" 19 ]; 20 }; 21 networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ]; 22 environment.systemPackages = with pkgs; [ git buildbot-full ]; 23 }; 24 25 bbworker = { config, pkgs, ... }: { 26 services.buildbot-worker = { 27 enable = true; 28 masterUrl = "bbmaster:9989"; 29 }; 30 environment.systemPackages = with pkgs; [ git buildbot-worker ]; 31 }; 32 33 gitrepo = { config, pkgs, ... }: { 34 services.openssh.enable = true; 35 networking.firewall.allowedTCPPorts = [ 22 9418 ]; 36 environment.systemPackages = with pkgs; [ git ]; 37 }; 38 }; 39 40 testScript = '' 41 #Start up and populate fake repo 42 $gitrepo->waitForUnit("multi-user.target"); 43 print($gitrepo->execute(" \ 44 git config --global user.name 'Nobody Fakeuser' && \ 45 git config --global user.email 'nobody\@fakerepo.com' && \ 46 rm -rvf /srv/repos/fakerepo.git /tmp/fakerepo && \ 47 mkdir -pv /srv/repos/fakerepo ~/.ssh && \ 48 ssh-keyscan -H gitrepo > ~/.ssh/known_hosts && \ 49 cat ~/.ssh/known_hosts && \ 50 cd /srv/repos/fakerepo && \ 51 git init && \ 52 echo -e '#!/bin/sh\necho fakerepo' > fakerepo.sh && \ 53 cat fakerepo.sh && \ 54 touch .git/git-daemon-export-ok && \ 55 git add fakerepo.sh .git/git-daemon-export-ok && \ 56 git commit -m fakerepo && \ 57 git daemon --verbose --export-all --base-path=/srv/repos --reuseaddr & \ 58 ")); 59 60 # Test gitrepo 61 $bbmaster->waitForUnit("network-online.target"); 62 #$bbmaster->execute("nc -z gitrepo 9418"); 63 print($bbmaster->execute(" \ 64 rm -rfv /tmp/fakerepo && \ 65 git clone git://gitrepo/fakerepo /tmp/fakerepo && \ 66 pwd && \ 67 ls -la && \ 68 ls -la /tmp/fakerepo \ 69 ")); 70 71 # Test start master and connect worker 72 $bbmaster->waitForUnit("buildbot-master.service"); 73 $bbmaster->waitUntilSucceeds("curl -s --head http://bbmaster:8010") =~ /200 OK/; 74 $bbworker->waitForUnit("network-online.target"); 75 $bbworker->execute("nc -z bbmaster 8010"); 76 $bbworker->execute("nc -z bbmaster 9989"); 77 $bbworker->waitForUnit("buildbot-worker.service"); 78 print($bbworker->execute("ls -la /home/bbworker/worker")); 79 80 81 # Test stop buildbot master and worker 82 print($bbmaster->execute(" \ 83 systemctl -l --no-pager status buildbot-master && \ 84 systemctl stop buildbot-master \ 85 ")); 86 $bbworker->fail("nc -z bbmaster 8010"); 87 $bbworker->fail("nc -z bbmaster 9989"); 88 print($bbworker->execute(" \ 89 systemctl -l --no-pager status buildbot-worker && \ 90 systemctl stop buildbot-worker && \ 91 ls -la /home/bbworker/worker \ 92 ")); 93 94 95 # Test buildbot daemon mode 96 # NOTE: daemon mode tests disabled due to broken PYTHONPATH child inheritence 97 # 98 #$bbmaster->execute("buildbot create-master /tmp"); 99 #$bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg"); 100 #$bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg"); 101 #$bbmaster->execute("buildbot start /tmp"); 102 #$bbworker->execute("nc -z bbmaster 8011"); 103 #$bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/; 104 #$bbmaster->execute("buildbot stop /tmp"); 105 #$bbworker->fail("nc -z bbmaster 8011"); 106 107 ''; 108 109 meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ]; 110 111})