at 25.11-pre 2.0 kB view raw
1import ./make-test-python.nix ( 2 { pkgs, ... }: 3 { 4 name = "ustreamer-vmtest"; 5 nodes = { 6 client = 7 { ... }: 8 { 9 environment.systemPackages = [ pkgs.curl ]; 10 }; 11 camera = 12 { config, ... }: 13 let 14 configFile = pkgs.writeText "akvcam-configFile" '' 15 [Cameras] 16 cameras/size = 2 17 18 cameras/1/type = output 19 cameras/1/mode = mmap, userptr, rw 20 cameras/1/description = Virtual Camera (output device) 21 cameras/1/formats = 2 22 cameras/1/videonr = 7 23 24 cameras/2/type = capture 25 cameras/2/mode = mmap, rw 26 cameras/2/description = Virtual Camera 27 cameras/2/formats = 1, 2 28 cameras/2/videonr = 9 29 30 [Connections] 31 connections/size = 1 32 connections/1/connection = 1:2 33 34 [Formats] 35 formats/size = 2 36 37 formats/1/format = YUY2 38 formats/1/width = 640 39 formats/1/height = 480 40 formats/1/fps = 30 41 42 formats/2/format = RGB24, YUY2 43 formats/2/width = 640 44 formats/2/height = 480 45 formats/2/fps = 20/1, 15/2 46 ''; 47 in 48 { 49 services.ustreamer = { 50 enable = true; 51 device = "/dev/video9"; 52 extraArgs = [ "--device-timeout=8" ]; 53 }; 54 networking.firewall.allowedTCPPorts = [ 8080 ]; 55 56 boot.extraModulePackages = [ config.boot.kernelPackages.akvcam ]; 57 boot.kernelModules = [ "akvcam" ]; 58 boot.extraModprobeConfig = '' 59 options akvcam config_file=${configFile} 60 ''; 61 }; 62 }; 63 64 testScript = '' 65 start_all() 66 67 camera.wait_for_unit("ustreamer.service") 68 camera.wait_for_open_port(8080) 69 70 client.wait_for_unit("multi-user.target") 71 client.succeed("curl http://camera:8080") 72 ''; 73 } 74)