testament: remove deadcode related to realtimeGC, testC, callCCompiler (#18087)
This commit is contained in:
parent
3b1aabdcff
commit
1e0165186b
6 changed files with 15 additions and 162 deletions
|
|
@ -28,7 +28,6 @@ const
|
||||||
"js",
|
"js",
|
||||||
"ic",
|
"ic",
|
||||||
"lib",
|
"lib",
|
||||||
"longgc",
|
|
||||||
"manyloc",
|
"manyloc",
|
||||||
"nimble-packages",
|
"nimble-packages",
|
||||||
"niminaction",
|
"niminaction",
|
||||||
|
|
@ -39,7 +38,6 @@ const
|
||||||
"coroutines",
|
"coroutines",
|
||||||
"osproc",
|
"osproc",
|
||||||
"shouldfail",
|
"shouldfail",
|
||||||
"dir with space",
|
|
||||||
"destructor"
|
"destructor"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -156,19 +154,6 @@ proc gcTests(r: var TResults, cat: Category, options: string) =
|
||||||
test "cyclecollector"
|
test "cyclecollector"
|
||||||
testWithoutBoehm "trace_globals"
|
testWithoutBoehm "trace_globals"
|
||||||
|
|
||||||
proc longGCTests(r: var TResults, cat: Category, options: string) =
|
|
||||||
when defined(windows):
|
|
||||||
let cOptions = "-ldl -DWIN"
|
|
||||||
else:
|
|
||||||
let cOptions = "-ldl"
|
|
||||||
|
|
||||||
var c = initResults()
|
|
||||||
# According to ioTests, this should compile the file
|
|
||||||
testSpec c, makeTest("tests/realtimeGC/shared", options, cat)
|
|
||||||
# ^- why is this not appended to r? Should this be discarded?
|
|
||||||
testC r, makeTest("tests/realtimeGC/cmain", cOptions, cat), actionRun
|
|
||||||
testSpec r, makeTest("tests/realtimeGC/nmain", options & "--threads: on", cat)
|
|
||||||
|
|
||||||
# ------------------------- threading tests -----------------------------------
|
# ------------------------- threading tests -----------------------------------
|
||||||
|
|
||||||
proc threadTests(r: var TResults, cat: Category, options: string) =
|
proc threadTests(r: var TResults, cat: Category, options: string) =
|
||||||
|
|
@ -186,6 +171,11 @@ proc ioTests(r: var TResults, cat: Category, options: string) =
|
||||||
# dummy compile result:
|
# dummy compile result:
|
||||||
var c = initResults()
|
var c = initResults()
|
||||||
testSpec c, makeTest("tests/system/helpers/readall_echo", options, cat)
|
testSpec c, makeTest("tests/system/helpers/readall_echo", options, cat)
|
||||||
|
# ^- why is this not appended to r? Should this be discarded?
|
||||||
|
# EDIT: this should be replaced by something like in D20210524T180826,
|
||||||
|
# likewise in similar instances where `testSpec c` is used, or more generally
|
||||||
|
# when a test depends on another test, as it makes tests non-independent,
|
||||||
|
# creating complications for batching and megatest logic.
|
||||||
testSpec r, makeTest("tests/system/tio", options, cat)
|
testSpec r, makeTest("tests/system/tio", options, cat)
|
||||||
|
|
||||||
# ------------------------- async tests ---------------------------------------
|
# ------------------------- async tests ---------------------------------------
|
||||||
|
|
@ -687,8 +677,6 @@ proc processCategory(r: var TResults, cat: Category,
|
||||||
dllTests(r, cat, options)
|
dllTests(r, cat, options)
|
||||||
of "gc":
|
of "gc":
|
||||||
gcTests(r, cat, options)
|
gcTests(r, cat, options)
|
||||||
of "longgc":
|
|
||||||
longGCTests(r, cat, options)
|
|
||||||
of "debugger":
|
of "debugger":
|
||||||
debuggerTests(r, cat, options)
|
debuggerTests(r, cat, options)
|
||||||
of "manyloc":
|
of "manyloc":
|
||||||
|
|
|
||||||
|
|
@ -221,53 +221,6 @@ proc callNimCompiler(cmdTemplate, filename, options, nimcache: string,
|
||||||
result.msg = matches[0]
|
result.msg = matches[0]
|
||||||
trimUnitSep result.msg
|
trimUnitSep result.msg
|
||||||
|
|
||||||
proc callCCompiler(cmdTemplate, filename, options: string,
|
|
||||||
target: TTarget): TSpec =
|
|
||||||
let cmd = prepareTestCmd(cmdTemplate, filename, options, nimcache = "", target)
|
|
||||||
doAssert false
|
|
||||||
#[
|
|
||||||
this code hasn't been run in a while, and should be removed which simplifies code
|
|
||||||
there are better ways to do this anyways (e.g. running c code from a nim file)
|
|
||||||
|
|
||||||
the only place where this is called is:
|
|
||||||
`testC r, makeTest("tests/realtimeGC/cmain", cOptions, cat), actionRun`
|
|
||||||
which isn't run unless you call:
|
|
||||||
XDG_CONFIG_HOME= nim r --lib:lib --stacktrace:on testament/testament.nim r longgc
|
|
||||||
|
|
||||||
and this fails since at least nim 1.0 with:
|
|
||||||
testament/testament.nim(851) testament
|
|
||||||
testament/testament.nim(822) main
|
|
||||||
testament/categories.nim(713) processCategory
|
|
||||||
testament/categories.nim(189) longGCTests
|
|
||||||
testament/testament.nim(644) makeTest
|
|
||||||
testament/specs.nim(251) parseSpec
|
|
||||||
testament/specs.nim(184) extractSpec
|
|
||||||
lib/system/io.nim(861) readFile
|
|
||||||
Error: unhandled exception: cannot open: tests/realtimeGC/cmain.nim [IOError]
|
|
||||||
|
|
||||||
Also, `c[5 .. ^1]` is too magical.
|
|
||||||
]#
|
|
||||||
let c = cmd.parseCmdLine
|
|
||||||
var p = startProcess(command = "gcc", args = c[5 .. ^1],
|
|
||||||
options = {poStdErrToStdOut, poUsePath, poEvalCommand})
|
|
||||||
let outp = p.outputStream
|
|
||||||
var x = newStringOfCap(120)
|
|
||||||
result.nimout = ""
|
|
||||||
result.msg = ""
|
|
||||||
result.file = ""
|
|
||||||
result.output = ""
|
|
||||||
result.line = -1
|
|
||||||
while true:
|
|
||||||
if outp.readLine(x):
|
|
||||||
result.nimout.add(x & '\n')
|
|
||||||
elif not running(p):
|
|
||||||
break
|
|
||||||
close(p)
|
|
||||||
if p.peekExitCode == 0:
|
|
||||||
result.err = reSuccess
|
|
||||||
else:
|
|
||||||
result.err = reNimcCrash
|
|
||||||
|
|
||||||
proc initResults: TResults =
|
proc initResults: TResults =
|
||||||
result.total = 0
|
result.total = 0
|
||||||
result.passed = 0
|
result.passed = 0
|
||||||
|
|
@ -628,22 +581,6 @@ proc testSpecWithNimcache(r: var TResults, test: TTest; nimcache: string) {.used
|
||||||
var testClone = test
|
var testClone = test
|
||||||
testSpecHelper(r, testClone, test.spec, target, nimcache)
|
testSpecHelper(r, testClone, test.spec, target, nimcache)
|
||||||
|
|
||||||
proc testC(r: var TResults, test: TTest, action: TTestAction) =
|
|
||||||
# runs C code. Doesn't support any specs, just goes by exit code.
|
|
||||||
if not checkDisabled(r, test): return
|
|
||||||
|
|
||||||
let tname = test.name.addFileExt(".c")
|
|
||||||
inc(r.total)
|
|
||||||
maybeStyledEcho "Processing ", fgCyan, extractFilename(tname)
|
|
||||||
var given = callCCompiler(getCmd(TSpec()), test.name & ".c", test.options, targetC)
|
|
||||||
if given.err != reSuccess:
|
|
||||||
r.addResult(test, targetC, "", given.msg, given.err)
|
|
||||||
elif action == actionRun:
|
|
||||||
let exeFile = changeFileExt(test.name, ExeExt)
|
|
||||||
var (_, exitCode) = execCmdEx(exeFile, options = {poStdErrToStdOut, poUsePath})
|
|
||||||
if exitCode != 0: given.err = reExitcodesDiffer
|
|
||||||
if given.err == reSuccess: inc(r.passed)
|
|
||||||
|
|
||||||
proc makeTest(test, options: string, cat: Category): TTest =
|
proc makeTest(test, options: string, cat: Category): TTest =
|
||||||
result.cat = cat
|
result.cat = cat
|
||||||
result.name = test
|
result.name = test
|
||||||
|
|
|
||||||
|
|
@ -55,5 +55,4 @@ testing, which is slower).
|
||||||
The folder ``dll`` contains simple DLL tests.
|
The folder ``dll`` contains simple DLL tests.
|
||||||
|
|
||||||
The folder ``realtimeGC`` contains a test for validating that the realtime GC
|
The folder ``realtimeGC`` contains a test for validating that the realtime GC
|
||||||
can run properly without linking against the nimrtl.dll/so. It includes a C
|
can run properly without linking against the nimrtl.dll/so.
|
||||||
client and platform specific build files for manual compilation.
|
|
||||||
|
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
/* xxx consider removing, this seems redundant with tmain.nim */
|
|
||||||
|
|
||||||
#ifdef WIN
|
|
||||||
#include <windows.h>
|
|
||||||
#else
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <unistd.h> /* for sleep(3) */
|
|
||||||
#endif
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#define RUNTIME (15*60)
|
|
||||||
|
|
||||||
|
|
||||||
typedef void (*pFunc)(void);
|
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
void* hndl;
|
|
||||||
pFunc status;
|
|
||||||
pFunc count;
|
|
||||||
pFunc checkOccupiedMem;
|
|
||||||
|
|
||||||
#ifdef WIN
|
|
||||||
hndl = (void*) LoadLibrary((char const*)"./tests/realtimeGC/shared.dll");
|
|
||||||
status = (pFunc)GetProcAddress((HMODULE) hndl, (char const*)"status");
|
|
||||||
count = (pFunc)GetProcAddress((HMODULE) hndl, (char const*)"count");
|
|
||||||
checkOccupiedMem = (pFunc)GetProcAddress((HMODULE) hndl, (char const*)"checkOccupiedMem");
|
|
||||||
#else /* OSX || NIX xxx: OSX assumes dylib*/
|
|
||||||
hndl = (void*) dlopen((char const*)"./tests/realtimeGC/libshared.so", RTLD_LAZY);
|
|
||||||
status = (pFunc) dlsym(hndl, (char const*)"status");
|
|
||||||
count = (pFunc) dlsym(hndl, (char const*)"count");
|
|
||||||
checkOccupiedMem = (pFunc) dlsym(hndl, (char const*)"checkOccupiedMem");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
assert(hndl);
|
|
||||||
assert(status);
|
|
||||||
assert(count);
|
|
||||||
assert(checkOccupiedMem);
|
|
||||||
|
|
||||||
time_t startTime = time((time_t*)0);
|
|
||||||
time_t runTime = (time_t)(RUNTIME);
|
|
||||||
time_t accumTime = 0;
|
|
||||||
while (accumTime < runTime) {
|
|
||||||
for (i = 0; i < 10; i++)
|
|
||||||
count();
|
|
||||||
/* printf("1. sleeping...\n"); */
|
|
||||||
sleep(1);
|
|
||||||
for (i = 0; i < 10; i++)
|
|
||||||
status();
|
|
||||||
/* printf("2. sleeping...\n"); */
|
|
||||||
sleep(1);
|
|
||||||
checkOccupiedMem();
|
|
||||||
accumTime = time((time_t*)0) - startTime;
|
|
||||||
/* printf("--- Minutes left to run: %d\n", (int)(runTime-accumTime)/60); */
|
|
||||||
}
|
|
||||||
printf("Cleaning up the shared object pointer...\n");
|
|
||||||
#ifdef WIN
|
|
||||||
FreeLibrary((HMODULE)hndl);
|
|
||||||
#else /* OSX || NIX */
|
|
||||||
dlclose(hndl);
|
|
||||||
#endif
|
|
||||||
printf("Done\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
Test the realtime GC without linking nimrtl.dll/so.
|
|
||||||
|
|
||||||
To build by hand and run the test for 35 minutes:
|
|
||||||
$ nim r --threads:on -d:runtimeSecs:2100 tests/realtimeGC/nmain.nim
|
|
||||||
|
|
||||||
```
|
|
||||||
xxx do we still need tests/realtimeGC/cmain.c?
|
|
||||||
if so, tests/realtimeGC/cmain.c needs to updated and factorized with nmain.nim to avoid duplication (even if it's a C file)
|
|
||||||
```
|
|
||||||
$ gcc -o tests/realtimeGC/cmain tests/realtimeGC/cmain.c -ldl
|
|
||||||
|
|
@ -9,6 +9,13 @@ these dont' seem needed --debuginfo
|
||||||
nor these from the previous main.nim.cfg: --app:console
|
nor these from the previous main.nim.cfg: --app:console
|
||||||
]#
|
]#
|
||||||
|
|
||||||
|
#[
|
||||||
|
Test the realtime GC without linking nimrtl.dll/so.
|
||||||
|
|
||||||
|
To build by hand and run the test for 35 minutes:
|
||||||
|
`nim r --threads:on -d:runtimeSecs:2100 tests/realtimeGC/tmain.nim`
|
||||||
|
]#
|
||||||
|
|
||||||
import times, os, strformat, strutils
|
import times, os, strformat, strutils
|
||||||
from stdtest/specialpaths import buildDir
|
from stdtest/specialpaths import buildDir
|
||||||
# import threadpool
|
# import threadpool
|
||||||
|
|
@ -16,9 +23,10 @@ from stdtest/specialpaths import buildDir
|
||||||
const runtimeSecs {.intdefine.} = 5
|
const runtimeSecs {.intdefine.} = 5
|
||||||
|
|
||||||
const file = "shared.nim"
|
const file = "shared.nim"
|
||||||
const dllname = buildDir / (DynlibFormat % file)
|
const dllname = buildDir / (DynlibFormat % "shared_D20210524T180506")
|
||||||
|
|
||||||
static:
|
static:
|
||||||
|
# D20210524T180826:here we compile the dependency on the fly
|
||||||
let nim = getCurrentCompilerExe()
|
let nim = getCurrentCompilerExe()
|
||||||
let (output, exitCode) = gorgeEx(fmt"{nim} c -o:{dllname} --debuginfo --app:lib --threads:on -d:release -d:useRealtimeGC {file}")
|
let (output, exitCode) = gorgeEx(fmt"{nim} c -o:{dllname} --debuginfo --app:lib --threads:on -d:release -d:useRealtimeGC {file}")
|
||||||
doAssert exitCode == 0, output
|
doAssert exitCode == 0, output
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue