Skip to content

Commit a66123c

Browse files
committed
first commits for cloud hosting
1 parent bb98d85 commit a66123c

File tree

10 files changed

+16127
-14240
lines changed

10 files changed

+16127
-14240
lines changed

package-lock.json

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
"build": "node rebuild-all.js --ci",
88
"build-prod": "node rebuild-all.js --ci",
99
"compile": "node rebuild-all.js --ci",
10-
"start": "ws -c lws.config.js --static.maxage 1 -d .",
10+
"start": "cd server && node index.js",
1111
"bench": "cd webdriver-ts && cross-env LANG=\"en_US.UTF-8\" node dist/benchmarkRunner.js",
1212
"results": "cd webdriver-ts && npm run results",
1313
"bench-all": "cd webdriver-ts && npm run bench && npm run results",
1414
"compile-webdriver-ts": "cd webdriver-ts && npm run compile",
1515
"install-webdriver-ts": "cd webdriver-ts && npm ci && npm run compile",
16+
"install-server": "cd server && npm ci",
1617
"install-webdriver-ts-results": "cd webdriver-ts-results && npm ci",
17-
"install-local": "npm run install-webdriver-ts && npm run install-webdriver-ts-results",
18+
"install-local": "npm run install-webdriver-ts && npm run install-webdriver-ts-results && npm run install-server",
1819
"docker-build-image": "docker build -t js-framework-benchmark-ubuntu -f Dockerfile .",
1920
"docker-start": "cross-env-shell docker run --rm -d -p 8080:8080 --name js-framework-benchmark --ipc=host -v /dev/shm:/dev/shm --volume ${INIT_CWD}:/src --volume js-framework-benchmark:/build js-framework-benchmark-ubuntu",
2021
"docker-stop": "docker stop js-framework-benchmark",

server/index.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
const express = require('express')
2+
const path = require('path')
3+
const fs = require('fs');
4+
const fsp = require('fs/promises');
5+
6+
const app = express()
7+
const port = 8080
8+
9+
async function loadFrameworkInfo(keyedDir, directoryName) {
10+
let result = {
11+
type: keyedDir,
12+
directory: directoryName,
13+
};
14+
15+
let copyProps = (result, packageJSON) => {
16+
result.issues = packageJSON["js-framework-benchmark"]["issues"];
17+
result.customURL = packageJSON["js-framework-benchmark"]["customURL"];
18+
let useShadowRoot = packageJSON["js-framework-benchmark"]["useShadowRoot"];
19+
result.useShadowRoot = useShadowRoot;
20+
result.useRowShadowRoot = packageJSON["js-framework-benchmark"]["useRowShadowRoot"];
21+
result.shadowRootName = useShadowRoot ? (packageJSON["js-framework-benchmark"]["shadowRootName"] ?? "main-element" ) : undefined;
22+
result.buttonsInShadowRoot = useShadowRoot ? (packageJSON["js-framework-benchmark"]["buttonsInShadowRoot"] ?? true) : undefined;
23+
}
24+
25+
const frameworkPath = path.resolve("..", "frameworks", keyedDir, directoryName);
26+
const packageJSONPath = path.resolve(frameworkPath, "package.json");
27+
const packageLockJSONPath = path.resolve(frameworkPath, "package-lock.json");
28+
if (fs.existsSync(packageJSONPath)) {
29+
let packageJSON = JSON.parse(await fsp.readFile(packageJSONPath, "utf8"));
30+
if (packageJSON["js-framework-benchmark"]) {
31+
if (packageJSON["js-framework-benchmark"]["frameworkVersionFromPackage"]) {
32+
let packageNames = packageJSON["js-framework-benchmark"]["frameworkVersionFromPackage"].split(":");
33+
let packageLockJSON = JSON.parse(await fsp.readFile(packageLockJSONPath, "utf8"));
34+
result.versions = {};
35+
for (let packageName of packageNames) {
36+
if (packageLockJSON.dependencies[packageName]) {
37+
result.versions[packageName] = packageLockJSON.dependencies[packageName].version;
38+
} else {
39+
result.versions[packageName] = "ERROR: Not found in package-lock";
40+
}
41+
}
42+
result.frameworkVersionString = directoryName + "-v" + packageNames.map(p => result.versions[p]).join(" + ") + "-"+keyedDir;
43+
copyProps(result, packageJSON);
44+
} else if (typeof packageJSON["js-framework-benchmark"]["frameworkVersion"] === "string") {
45+
result.version = packageJSON["js-framework-benchmark"]["frameworkVersion"];
46+
result.frameworkVersionString = directoryName + (result.version ? "-v" + result.version : "")+ "-"+keyedDir;
47+
copyProps(result, packageJSON);
48+
} else {
49+
result.error = "package.json must contain a 'frameworkVersionFromPackage' or 'frameworkVersion' in the 'js-framework-benchmark'.property";
50+
}
51+
} else {
52+
result.error = "package.json must contain a 'js-framework-benchmark' property";
53+
}
54+
} else {
55+
result.error = "No package.json found";
56+
}
57+
return result;
58+
}
59+
60+
async function loadFrameworkVersionInformation(filterForFramework) {
61+
// let matchesDirectoryArg = (directoryName) =>
62+
// frameworkArgument.length == 0 || frameworkArgument.some((arg: string) => arg == directoryName);
63+
64+
let resultsProm = [];
65+
let frameworksPath = path.resolve("..", "frameworks");
66+
for (keyedType of ["keyed", "non-keyed"]) {
67+
let directories = fs.readdirSync(path.resolve(frameworksPath, keyedType));
68+
for (let directory of directories) {
69+
let pathInFrameworksDir = keyedType + "/" + directory;
70+
if (!filterForFramework || filterForFramework===pathInFrameworksDir) {
71+
let fi = loadFrameworkInfo(keyedType, directory);
72+
resultsProm.push(fi);
73+
}
74+
}
75+
}
76+
return Promise.all(resultsProm);
77+
}
78+
79+
app.use('/frameworks', express.static(path.join(__dirname, '..', 'frameworks')))
80+
app.use('/css', express.static(path.join(__dirname, '..', 'css')))
81+
82+
app.get('/ls', async (req, res) => {
83+
let t0 = Date.now();
84+
let frameworks = await loadFrameworkVersionInformation();
85+
res.send(frameworks);
86+
let t1 = Date.now();
87+
console.log("/ls duration ", (t1-t0));
88+
})
89+
90+
app.listen(port, () => {
91+
console.log(`Server running on port ${port}`)
92+
})
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[Service]
2+
Type=simple
3+
ExecStart=/home/stefan/js-framework-benchmark/server/runserver.sh
4+
User=stefan
5+
Group=stefan
6+
7+
[Install]
8+
WantedBy=multi-user.target

0 commit comments

Comments
 (0)