1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
const std = @import("std");
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const module = b.addModule("cloud9", .{
.root_source_file = b.path("src/root.zig"),
.target = target,
.optimize = optimize,
});
const tests = b.addTest(.{ .root_module = module });
b.step("test", "Run protocol and session tests").dependOn(&b.addRunArtifact(tests).step);
const probe = b.addExecutable(.{
.name = "cloud9-probe",
.root_module = b.createModule(.{
.root_source_file = b.path("test/differential/probe.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
.imports = &.{.{ .name = "cloud9", .module = module }},
}),
});
b.installArtifact(probe);
const session_probe = b.addExecutable(.{
.name = "cloud9-session-probe",
.root_module = b.createModule(.{
.root_source_file = b.path("test/differential/session.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
.imports = &.{.{ .name = "cloud9", .module = module }},
}),
});
const diff = b.addSystemCommand(&.{ "go", "run", "." });
diff.setCwd(b.path("test/differential"));
diff.addArg("--probe");
diff.addArtifactArg(probe);
diff.addArg("--session-probe");
diff.addArtifactArg(session_probe);
if (b.args) |args| diff.addArgs(args);
b.step("differential", "Compare valid traffic with pinned 9fans and go9p").dependOn(&diff.step);
const transport_tests = b.addTest(.{ .root_module = b.createModule(.{
.root_source_file = b.path("test/transport.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
.imports = &.{.{ .name = "cloud9", .module = module }},
}) });
b.step("transport-test", "Test TCP, Unix and std.Io adapters").dependOn(&b.addRunArtifact(transport_tests).step);
if (b.option(bool, "quic", "Test QUIC with system OpenSSL 3.6+") orelse false) {
const header = b.addWriteFiles().add("openssl.h", "#include <openssl/ssl.h>\n#include <openssl/quic.h>\n#include <openssl/err.h>\n");
const translated = b.addTranslateC(.{ .root_source_file = header, .target = target, .optimize = optimize, .link_libc = true });
const ssl = translated.createModule();
const tests_quic = b.addTest(.{ .root_module = b.createModule(.{
.root_source_file = b.path("test/quic.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
.imports = &.{ .{ .name = "cloud9", .module = module }, .{ .name = "openssl", .module = ssl } },
}) });
tests_quic.root_module.linkSystemLibrary("ssl", .{});
tests_quic.root_module.linkSystemLibrary("crypto", .{});
b.step("quic-test", "Test optional QUIC transport").dependOn(&b.addRunArtifact(tests_quic).step);
}
const fuzz = b.addExecutable(.{ .name = "cloud9-fuzz", .root_module = b.createModule(.{
.root_source_file = b.path("test/fuzz.zig"),
.target = target,
.optimize = optimize,
.imports = &.{.{ .name = "cloud9", .module = module }},
}) });
const run_fuzz = b.addRunArtifact(fuzz);
if (b.args) |args| run_fuzz.addArgs(args);
b.step("fuzz", "Run deterministic local decoder and server probes (seed, iterations)").dependOn(&run_fuzz.step);
}
|