mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-25 10:42:51 +02:00
NETSCRIPT: Greatly speed up script launching, and remove the limitation unique args per script (#440)
* Remove the limitation unique args per script * Internal changes to how runningScripts are stored on the server, to make common usage faster.
This commit is contained in:
@@ -103,9 +103,12 @@ test.each([
|
||||
alerted,
|
||||
new Promise((resolve) => {
|
||||
eventDelete = WorkerScriptStartStopEventEmitter.subscribe(() => {
|
||||
if (!server.runningScripts.includes(runningScript)) {
|
||||
resolve(null);
|
||||
for (const byPid of server.runningScriptMap.values()) {
|
||||
for (const rs of byPid.values()) {
|
||||
if (rs === runningScript) return;
|
||||
}
|
||||
}
|
||||
resolve(null);
|
||||
});
|
||||
}),
|
||||
]);
|
||||
|
||||
+38
-26
@@ -1,6 +1,9 @@
|
||||
import "../../src/Player";
|
||||
|
||||
import { loadAllServers, saveAllServers } from "../../src/Server/AllServers";
|
||||
import { loadAllRunningScripts } from "../../src/NetscriptWorker";
|
||||
|
||||
jest.useFakeTimers();
|
||||
|
||||
// Direct tests of loading and saving.
|
||||
// Tests here should try to be comprehensive (cover as much stuff as possible)
|
||||
@@ -46,6 +49,7 @@ function loadStandardServers() {
|
||||
"pid": 3,
|
||||
"ramUsage": 1.6,
|
||||
"server": "home",
|
||||
"scriptKey": "script.js*[]",
|
||||
"temporary": true,
|
||||
"dependencies": [
|
||||
{
|
||||
@@ -71,6 +75,7 @@ function loadStandardServers() {
|
||||
"pid": 2,
|
||||
"ramUsage": 1.6,
|
||||
"server": "home",
|
||||
"scriptKey": "script.js*[]",
|
||||
"dependencies": [
|
||||
{
|
||||
"filename": "script.js",
|
||||
@@ -81,33 +86,39 @@ function loadStandardServers() {
|
||||
}
|
||||
}
|
||||
],
|
||||
"scripts": [
|
||||
{
|
||||
"ctor": "Script",
|
||||
"data": {
|
||||
"code": "/** @param {NS} ns */\\nexport async function main(ns) {\\n return ns.asleep(1000000);\\n}",
|
||||
"filename": "script.js",
|
||||
"module": {},
|
||||
"dependencies": [
|
||||
{
|
||||
"scripts": {
|
||||
"ctor": "JSONMap",
|
||||
"data": [
|
||||
[
|
||||
"script.js",
|
||||
{
|
||||
"ctor": "Script",
|
||||
"data": {
|
||||
"code": "/** @param {NS} ns */\\nexport async function main(ns) {\\n return ns.asleep(1000000);\\n}",
|
||||
"filename": "script.js",
|
||||
"url": "blob:http://localhost/e0abfafd-2c73-42fc-9eea-288c03820c47",
|
||||
"moduleSequenceNumber": 5
|
||||
"module": {},
|
||||
"dependencies": [
|
||||
{
|
||||
"filename": "script.js",
|
||||
"url": "blob:http://localhost/e0abfafd-2c73-42fc-9eea-288c03820c47",
|
||||
"moduleSequenceNumber": 5
|
||||
}
|
||||
],
|
||||
"ramUsage": 1.6,
|
||||
"server": "home",
|
||||
"moduleSequenceNumber": 5,
|
||||
"ramUsageEntries": [
|
||||
{
|
||||
"type": "misc",
|
||||
"name": "baseCost",
|
||||
"cost": 1.6
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ramUsage": 1.6,
|
||||
"server": "home",
|
||||
"moduleSequenceNumber": 5,
|
||||
"ramUsageEntries": [
|
||||
{
|
||||
"type": "misc",
|
||||
"name": "baseCost",
|
||||
"cost": 1.6
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"serversOnNetwork": [
|
||||
"n00dles"
|
||||
],
|
||||
@@ -131,12 +142,13 @@ function loadStandardServers() {
|
||||
}
|
||||
}
|
||||
}`); // Fix confused highlighting `
|
||||
loadAllRunningScripts();
|
||||
}
|
||||
|
||||
test("load/saveAllServers", () => {
|
||||
// Feed a JSON object through loadAllServers/saveAllServers.
|
||||
// The object is a pruned set of servers that was extracted from a real (dev) game.
|
||||
|
||||
jest.setSystemTime(123456789000);
|
||||
loadStandardServers();
|
||||
|
||||
// Re-stringify with indenting for nicer diffs
|
||||
|
||||
@@ -21,37 +21,22 @@ exports[`load/saveAllServers 1`] = `
|
||||
"programs": [
|
||||
"NUKE.exe"
|
||||
],
|
||||
"ramUsed": 1.6,
|
||||
"runningScripts": [
|
||||
{
|
||||
"ctor": "RunningScript",
|
||||
"data": {
|
||||
"args": [],
|
||||
"dataMap": {},
|
||||
"filename": "script.js",
|
||||
"offlineExpGained": 0,
|
||||
"offlineMoneyMade": 0,
|
||||
"offlineRunningTime": 0.01,
|
||||
"onlineExpGained": 0,
|
||||
"onlineMoneyMade": 0,
|
||||
"onlineRunningTime": 7.210000000000004,
|
||||
"ramUsage": 1.6,
|
||||
"server": "home",
|
||||
"threads": 1,
|
||||
"temporary": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"scripts": [
|
||||
{
|
||||
"ctor": "Script",
|
||||
"data": {
|
||||
"code": "/** @param {NS} ns */\\\\nexport async function main(ns) {\\\\n return ns.asleep(1000000);\\\\n}",
|
||||
"filename": "script.js",
|
||||
"server": "home"
|
||||
}
|
||||
}
|
||||
],
|
||||
"scripts": {
|
||||
"ctor": "JSONMap",
|
||||
"data": [
|
||||
[
|
||||
"script.js",
|
||||
{
|
||||
"ctor": "Script",
|
||||
"data": {
|
||||
"code": "/** @param {NS} ns */\\\\nexport async function main(ns) {\\\\n return ns.asleep(1000000);\\\\n}",
|
||||
"filename": "script.js",
|
||||
"server": "home"
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"serversOnNetwork": [
|
||||
"n00dles"
|
||||
],
|
||||
@@ -72,7 +57,28 @@ exports[`load/saveAllServers 1`] = `
|
||||
"numOpenPortsRequired": 5,
|
||||
"openPortCount": 0,
|
||||
"requiredHackingSkill": 1,
|
||||
"serverGrowth": 1
|
||||
"serverGrowth": 1,
|
||||
"runningScripts": [
|
||||
{
|
||||
"ctor": "RunningScript",
|
||||
"data": {
|
||||
"args": [],
|
||||
"dataMap": {},
|
||||
"filename": "script.js",
|
||||
"offlineExpGained": 0,
|
||||
"offlineMoneyMade": 0,
|
||||
"offlineRunningTime": 123456789.01,
|
||||
"onlineExpGained": 0,
|
||||
"onlineMoneyMade": 0,
|
||||
"onlineRunningTime": 7.210000000000004,
|
||||
"ramUsage": 1.6,
|
||||
"server": "home",
|
||||
"scriptKey": "script.js*[]",
|
||||
"threads": 1,
|
||||
"temporary": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"n00dles": {
|
||||
@@ -90,8 +96,6 @@ exports[`load/saveAllServers 1`] = `
|
||||
"messages": [],
|
||||
"organizationName": "Noodle Bar",
|
||||
"programs": [],
|
||||
"ramUsed": 0,
|
||||
"runningScripts": [],
|
||||
"scripts": {
|
||||
"ctor": "JSONMap",
|
||||
"data": []
|
||||
@@ -116,7 +120,8 @@ exports[`load/saveAllServers 1`] = `
|
||||
"numOpenPortsRequired": 0,
|
||||
"openPortCount": 0,
|
||||
"requiredHackingSkill": 1,
|
||||
"serverGrowth": 3000
|
||||
"serverGrowth": 3000,
|
||||
"runningScripts": []
|
||||
}
|
||||
}
|
||||
}"
|
||||
@@ -143,18 +148,22 @@ exports[`load/saveAllServers pruning RunningScripts 1`] = `
|
||||
"programs": [
|
||||
"NUKE.exe"
|
||||
],
|
||||
"ramUsed": 1.6,
|
||||
"runningScripts": [],
|
||||
"scripts": [
|
||||
{
|
||||
"ctor": "Script",
|
||||
"data": {
|
||||
"code": "/** @param {NS} ns */\\\\nexport async function main(ns) {\\\\n return ns.asleep(1000000);\\\\n}",
|
||||
"filename": "script.js",
|
||||
"server": "home"
|
||||
}
|
||||
}
|
||||
],
|
||||
"scripts": {
|
||||
"ctor": "JSONMap",
|
||||
"data": [
|
||||
[
|
||||
"script.js",
|
||||
{
|
||||
"ctor": "Script",
|
||||
"data": {
|
||||
"code": "/** @param {NS} ns */\\\\nexport async function main(ns) {\\\\n return ns.asleep(1000000);\\\\n}",
|
||||
"filename": "script.js",
|
||||
"server": "home"
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"serversOnNetwork": [
|
||||
"n00dles"
|
||||
],
|
||||
@@ -175,7 +184,8 @@ exports[`load/saveAllServers pruning RunningScripts 1`] = `
|
||||
"numOpenPortsRequired": 5,
|
||||
"openPortCount": 0,
|
||||
"requiredHackingSkill": 1,
|
||||
"serverGrowth": 1
|
||||
"serverGrowth": 1,
|
||||
"runningScripts": []
|
||||
}
|
||||
},
|
||||
"n00dles": {
|
||||
@@ -193,8 +203,6 @@ exports[`load/saveAllServers pruning RunningScripts 1`] = `
|
||||
"messages": [],
|
||||
"organizationName": "Noodle Bar",
|
||||
"programs": [],
|
||||
"ramUsed": 0,
|
||||
"runningScripts": [],
|
||||
"scripts": {
|
||||
"ctor": "JSONMap",
|
||||
"data": []
|
||||
@@ -219,7 +227,8 @@ exports[`load/saveAllServers pruning RunningScripts 1`] = `
|
||||
"numOpenPortsRequired": 0,
|
||||
"openPortCount": 0,
|
||||
"requiredHackingSkill": 1,
|
||||
"serverGrowth": 3000
|
||||
"serverGrowth": 3000,
|
||||
"runningScripts": []
|
||||
}
|
||||
}
|
||||
}"
|
||||
|
||||
Reference in New Issue
Block a user