forked from reflex-frp/reflex-platform
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbenchmark.nix
More file actions
58 lines (44 loc) · 1.65 KB
/
benchmark.nix
File metadata and controls
58 lines (44 loc) · 1.65 KB
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
{ reflex-platform ? import ./. {} }:
let pkgs = reflex-platform.nixpkgs;
in pkgs.writeScript "benchmark.sh" ''
#!/usr/bin/env bash
set -euo pipefail
exec 3>&1
exec 1>&2
PATH="${pkgs.nodejs-8_x}/bin:${pkgs.nodePackages.npm}/bin:${pkgs.chromedriver}/bin:$PATH"
CHROME_BINARY="${if reflex-platform.system == "x86_64-darwin"
then ""
else ''--chromeBinary "${pkgs.chromium}/bin/chromium"''
}"
CHROMEDRIVER="${if reflex-platform.system == "x86_64-darwin"
then ""
else ''--chromeDriver "${pkgs.chromedriver}/bin/chromedriver"''
}"
CLEAN=$(mktemp -d 2>/dev/null || mktemp -d -t 'clean') # This crazy workaround ensures that it will work on both Mac OS and Linux; see https://unix.stackexchange.com/questions/30091/fix-or-alternative-for-mktemp-in-os-x
trap "rm -rf \"$CLEAN\"" EXIT
cd "$CLEAN"
cp -a "${reflex-platform.js-framework-benchmark-src}/"* .
chmod -R +w .
npm install
for package in webdriver-ts webdriver-ts-results vanillajs-keyed; do
cd $package
npm install
npm run build-prod
cd ..
done
REFLEX_DOM_DIST=reflex-dom-v0.4-keyed/dist
mkdir -p "$REFLEX_DOM_DIST"
cp -a "${reflex-platform.ghcjs.reflex-dom}/bin/krausest.jsexe/"* "$REFLEX_DOM_DIST"
npm start > server.out &
SERVER_PID=$!
# ensures that grep will block execution but tail won't
# https://superuser.com/questions/270529/monitoring-a-file-until-a-string-is-found/900134#900134
SERVER_PORT="$((tail -f -n0 server.out & ) | grep -m 1 '127.0.0.1' | sed -e 's/.*127.0.0.1://')"
cd webdriver-ts
npm run selenium -- --framework vanillajs-keyed reflex --count 1 --headless $CHROME_BINARY $CHROMEDRIVER --port $SERVER_PORT
kill "$SERVER_PID"
exec 1>&3
echo "[";
paste -d ',' results/*;
echo "]";
''