summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xstress23
-rwxr-xr-xstressgen54
2 files changed, 77 insertions, 0 deletions
diff --git a/stress b/stress
new file mode 100755
index 0000000..6ad04ae
--- /dev/null
+++ b/stress
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -eu
+
+NSCEN=1000
+NSTEP=100
+
+ts() {
+ local start="$1"
+ local now="$(date +%s)"
+ echo "$now - $start" | bc
+}
+
+start="$(ts 0)"
+
+./stressgen s "$NSCEN" "$NSTEP"
+echo "generate: $(ts "$start")"
+
+cargo run -q --bin sp-docgen -- s.md -o s.pdf
+echo "docgen: $(ts "$start")"
+
+cargo run -q --bin sp-codegen -- s.md -o test.py --run > /dev/null
+echo "codegen: $(ts "$start")"
diff --git a/stressgen b/stressgen
new file mode 100755
index 0000000..4fc5c0d
--- /dev/null
+++ b/stressgen
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def generate_prelude(f, basename):
+ f.write('''\
+---
+title: "stress test"
+bindings: {basename}.yaml
+functions: {basename}.py
+...
+'''.format(basename=basename))
+
+
+def generate_scenario(f, scen_number, steps):
+ f.write('\n')
+ f.write('# Scenario {}\n'.format(scen_number))
+ f.write('~~~scenario\n')
+ for i in range(steps):
+ f.write('given precondition {}\n'.format(i))
+ f.write('~~~\n')
+
+
+def generate_bindings(f, num_bindings):
+ for i in range(num_bindings):
+ f.write('- given: precondition {}\n'.format(i))
+ f.write(' function: nop\n')
+
+
+def generate_functions(f):
+ f.write('def nop(ctx):\n')
+ f.write(' pass\n')
+
+
+def main():
+ basename = sys.argv[1]
+ scenarios = int(sys.argv[2])
+ steps = int(sys.argv[3])
+
+ with open(basename + '.md', 'w') as f:
+ generate_prelude(f, basename)
+ for i in range(scenarios):
+ generate_scenario(f, i, steps)
+
+ with open(basename + '.yaml', 'w') as f:
+ generate_bindings(f, steps)
+
+ with open(basename + '.py', 'w') as f:
+ generate_functions(f)
+
+
+if __name__ == "__main__":
+ main()