1515 diskSize = 4096 ;
1616 } ;
1717 } ;
18- channels = with builtins ; toFile "channels.json" ( toJSON ( import ./channels.nix ) ) ;
19- channels-port = toString 8080 ;
18+ hydra = {
19+ port = toString 8080 ;
20+ mock = pkgs . writeText "hydra-mock" ''
21+ from http.server import BaseHTTPRequestHandler, HTTPServer
22+ class H(BaseHTTPRequestHandler):
23+ def do_GET(self):
24+ self.send_response(200)
25+ self.send_header("Content-Type", "application/json")
26+ self.end_headers()
27+ self.wfile.write(b'${
28+ builtins . toJSON {
29+ inputs . nixpkgs . value = "https://github.com/NixOS/nixpkgs.git" ;
30+ }
31+ } ')
32+ log_message = lambda *_: None
33+ HTTPServer(("", ${ hydra . port } ), H).serve_forever()
34+ '' ;
35+ } ;
2036in
2137pkgs . testers . runNixOSTest {
2238 name = "default" ;
@@ -65,7 +81,7 @@ pkgs.testers.runNixOSTest {
6581 domain = "example.org" ;
6682 settings = {
6783 DEBUG = true ;
68- CHANNEL_MONITORING_URL = "http://localhost:${ channels- port} /channels.json " ;
84+ HYDRA_URL = "http://localhost:${ hydra . port } " ;
6985 GIT_CLONE_URL = "file://${ dummy-nixpkgs } " ;
7086 SYNC_GITHUB_STATE_AT_STARTUP = false ;
7187 GH_ISSUES_PING_MAINTAINERS = true ;
@@ -93,18 +109,11 @@ pkgs.testers.runNixOSTest {
93109 GH_APP_PRIVATE_KEY = dummy-str ;
94110 } ;
95111 } ;
96- systemd . services . mock-channels = {
112+ systemd . services . ${ hydra . mock . name } = {
97113 wantedBy = [ "multi-user.target" ] ;
98- before = [ "${ application } -server.service" ] ;
99- path = with pkgs ; [
100- python3
101- gnused
102- ] ;
103- script = ''
104- cd /tmp
105- sed "s/@commit@/$(cat ${ dummy-nixpkgs } /REVISION)/g" ${ channels } > channels.json
106- python -m http.server ${ channels-port }
107- '' ;
114+ before = [ "${ application } -fetch-all-channels.service" ] ;
115+ path = [ pkgs . python3 ] ;
116+ script = "python ${ hydra . mock } " ;
108117 } ;
109118 systemd . services . setup-git-repo = {
110119 wantedBy = [ "multi-user.target" ] ;
@@ -130,20 +139,22 @@ pkgs.testers.runNixOSTest {
130139 ''
131140 server.wait_for_unit("${ application } -server.service")
132141 server.wait_for_unit("${ application } -worker.service")
133- server.wait_for_unit("mock-channels .service")
142+ server.wait_for_unit("${ hydra . mock . name } .service")
134143
135144 with subtest("Check that no migrations were missed"):
136145 server.succeed("wst-manage makemigrations --check --dry-run")
137146
138- with subtest("Check that channel are fetched and evaluations enqueued"):
147+ with subtest("Check that channels are fetched and evaluations enqueued"):
139148 server.succeed("wst-manage fetch_all_channels")
140149 ${ in-shell "succeed" ''
141150 from shared.models import NixChannel
142- assert NixChannel.objects.count() == 4
151+ from shared.models.nix_evaluation import NixpkgsBranch
152+ assert NixpkgsBranch.objects.count() == 1, f"expected 1 branch, got {NixpkgsBranch.objects.count()}"
153+ assert NixChannel.objects.count() >= 1, f"expected at least 1 channel, got {NixChannel.objects.count()}"
143154 '' }
144- ${ in-shell "succeed " ''
155+ ${ in-shell "succeed" ''
145156 from shared.models import NixEvaluation
146- assert NixEvaluation.objects.count() == 1
157+ assert NixEvaluation.objects.count() == 1, f"expected 1 evaluation, got {NixEvaluation.objects.count()}"
147158 '' }
148159
149160 with subtest("Application tests"):
@@ -214,11 +225,11 @@ pkgs.testers.runNixOSTest {
214225 # Maintainers should only be attached to derivations from the tracking branch.
215226 from django.conf import settings
216227 tracking_meta = NixDerivationMeta.objects.get(
217- derivation__parent_evaluation__channel__channel_branch =settings.TRACKING_BRANCH,
228+ derivation__parent_evaluation__channel__release_branch__name =settings.TRACKING_BRANCH,
218229 )
219230 assert tracking_meta.maintainers.exists(), f"{settings.TRACKING_BRANCH} meta has no maintainers"
220231 for m in NixDerivationMeta.objects.exclude(
221- derivation__parent_evaluation__channel__channel_branch =settings.TRACKING_BRANCH,
232+ derivation__parent_evaluation__channel__release_branch__name =settings.TRACKING_BRANCH,
222233 ):
223234 assert not m.maintainers.exists(), f"{m.derivation.parent_evaluation.channel.channel_branch}) has unexpected maintainers"
224235 ''
0 commit comments