d45041e00c
Disable delayed connect
2023-11-16 12:39:14 +01:00
354f2f50eb
Register emulation models only if required
...
Until now, emulation models were always being registered via probe(),
which causes the emulator to initialize all the channels. To reduce the
overhead, the channels were not connected or registered in the bay
until the first event of that model was received. This delayed connect
was causing issues in muxes where the newly connected model required
refreshing the touched channels. Which in turn was causing unexpected
PRV events.
By determining which models we need to enable, we can remove the delayed
connect mechanism and just enable those models at initialization time,
and connect the channels.
2023-11-16 12:39:05 +01:00
428e0b44b8
Add emu test for ovni_thread_require
2023-11-16 12:21:50 +01:00
c13d57f0f6
Fix for nOS-V with ovni.level=2
...
When running without all the subsystem events enabled in nOS-V, it is
possible to emit two consecutive VTx events, which would push twice the
same value ST_TASK_BODY into the subsystem channel. This change relaxes
the subsystem channel to accept duplicate stacked values. A regression
test is also added.
Reported-By: Raúl Peñacoba Veigas <raul.penacoba@bsc.es>
2023-11-14 17:26:43 +01:00
8de5f329d9
Add RT nOS-V tests for the ovni.level option
...
Only nOS-V versions higher than 1.1.0 have support for the "ovni.level"
option.
2023-11-08 15:58:50 +01:00
eda93acc49
Use pkg-config to find nOS-V
2023-11-08 15:58:46 +01:00
4b4f1bd218
Don't modify nOS-V subsystem state on task pause
...
In nOS-V, when a task was paused via the VTp event, two things were
happening: 1) the task state was set to pause and 2) the subsystem state
"Task: Running" was being popped.
This causes a problem when a task calls nosv_submit() in blocking mode,
as it will call nosv_pause() which will emit a VTp event from a
subsystem different than "Task: Running".
To solve this conflict, we handle the subsystems state and the task
state separately with the VTp and VTr events. The subsystem state "Task:
Running" no longer is connected to the state of the task and only shows
if we entered the body of the task or not. It has now been renamed to
"Task: In body".
The new state "Task: In body" represents that the task body has begun
the execution and is still in the stack, but the task may be paused. The
subsystem is not changed by the VTp (pause) or VTr (resume) events.
Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/128
2023-10-23 11:26:17 +02:00
0df018cf5f
Fix segfault reading empty streams
...
The check_clock_gate() was trying to access to the first event in all
streams. However, streams that are empty don't have any event, so they
cause a NULL dereference. Skipping not active streams avoids the
problem.
2023-10-23 10:07:44 +02:00
0db35980a0
Add a test for multiple values of OVNI_TRACEDIR
2023-10-23 07:49:28 +00:00
d1bf4e7520
Allow tests to run their own driver
...
Tests can now specify a DRIVER option pointing to a shell script that
will run instead of the default driver. It allows tests to run any
commands and run the emulator several times or with different
environment variables.
The full path of the test program is available in the OVNI_TEST_PATH
environment variable.
2023-10-23 07:49:28 +00:00
Kevin Sala
afb81172a7
Add MPI emu tests
2023-09-06 18:11:19 +02:00
Kevin Sala
1e2102c0a0
Add TAMPI emu tests
2023-08-22 18:13:29 +02:00
b1ee2e7143
Add taskloop test in Nanos6 and NODES
2023-07-28 18:15:28 +02:00
f8c6b7c7c0
Improve the version error message
...
Use the terminology want/got to determine which version the user is
requested and the version the library provides.
2023-07-25 19:55:51 +02:00
74557ab348
Don't rely on temporary directories
...
Use the current test directory instead.
2023-07-25 16:36:57 +02:00
c257405060
Define unit_test() macro with ovni_test()
...
This allows unit tests to be executed in a individual directory where
they can create new files in $PWD.
2023-07-25 16:26:25 +02:00
2b612166d7
Use dinamically linked ovni for tests
...
We rely on this library to override the libovni.so that other libraries
are using.
2023-07-07 12:20:41 +02:00
7c68922a95
Enable NODES rt instrumentation
...
The NODES_OVNI environment variable is now needed to enable the ovni
instrumentation.
2023-07-07 10:52:46 +02:00
48df02f102
Always use the project version
...
Don't duplicated versions so we avoid the problem of missing one
instance to be updated.
2023-07-07 10:42:40 +02:00
929af74d3f
Add sort-flush test
2023-06-28 12:28:40 +02:00
f8a15df1b9
Fix Nanos6 and NODES rt tests
2023-05-31 19:16:18 +02:00
64c2d52a7a
Always enable all tests for ovni-rt
2023-05-30 18:16:08 +02:00
f5a911485a
Remove unused configuration options for nOS-V
2023-05-30 17:41:05 +02:00
d0a47783f2
Use the completion callback to wait
...
The memory allocated is freed after the spawned function is executed.
2023-05-08 19:23:42 +02:00
7d7c59bbf8
Fix bug in spawn task tests
...
The argument passed to nanos6_spawn_function() was being destroyed when
the parent function ends.
2023-05-02 20:04:29 +02:00
fb435842b2
Add nosv multiple-segment test
2023-04-25 17:00:42 +02:00
7089db0bd0
Remove the workdir in each test run
...
Ensures the scripts are also rebuilt.
2023-04-25 16:52:21 +02:00
ff340df5b5
Disable flush-overhead test
2023-04-19 10:57:10 +00:00
3a28e1c3d3
Avoid fmemopen() due to bug in old glibc
2023-04-19 10:57:10 +00:00
4a936dcb99
Add test to prevent re-running tasks in Nanos6
...
For now is disabled until we have a better instrumentation for task
states.
2023-04-17 15:58:19 +00:00
bc513832a5
Allow tests to be disabled
...
Ensure that we still build the tests but they don't run.
2023-04-17 15:58:19 +00:00
3c6c6ed230
Add taskiter NODES test
2023-04-17 15:58:19 +00:00
b16c30a5e6
Add Absorbing state to the idle view in Nanos6
2023-04-14 13:39:37 +00:00
6cafd347ce
Add support for sponge subsystem state in Nanos6
2023-04-14 13:39:37 +00:00
676e30b4ca
Order looms and processes by rank if given
2023-04-14 08:35:21 +00:00
602daabe23
Fix copyright years
2023-04-06 15:33:15 +00:00
c30a5d94b5
Add emu breakdown test for zero values
2023-04-06 15:33:15 +00:00
6711afdb58
Fix include headers following IWYU
2023-04-06 15:33:15 +00:00
acd63a915e
Add breakdown switch option in tests
2023-04-06 15:33:15 +00:00
30812e134e
Reduce test cases in sort_replace
2023-04-06 15:33:15 +00:00
467cc9aa7e
Fix value_str() usage
2023-04-06 15:33:15 +00:00
35872354e0
Speedup the sort module
...
Improvements:
- Don't propagate values if they didn't change
- Use custom sort algorithm to speedup the sorting
- Allocate a contiguous array of channel outputs
2023-04-06 15:33:15 +00:00
70b29b6459
Add sort channel module
...
Sorts the N input values and writes them in the N outputs in order.
2023-04-06 15:33:15 +00:00
f848ddb37f
Increase the flush overhead limit to 2 ms
...
The current CI disk is slower doing the flushes.
2023-04-05 15:35:37 +02:00
54527b0006
Fix shebang in regex match test scripts
2023-04-05 15:18:03 +02:00
080d1df3e1
Remove _DEFAULT_SOURCE from tests
2023-03-24 12:08:45 +00:00
848a1de963
Constraint _GNU_SOURCE in compat.c only
2023-03-24 12:08:45 +00:00
1e822c248e
Remove duplicated _POSIX_C_SOURCE define
2023-03-24 12:08:45 +00:00
ddbb7dd9f4
Add include-what-you-use
...
Adds forwards declarations in headers and includes all headers in
sources, even if they are found by transitive includes.
2023-03-24 12:08:45 +00:00
f22d9084ba
Ensure all looms have at least one CPU
2023-03-24 12:08:45 +00:00
81875450a8
Add unit tests for PRV_SKIPDUP and PRV_EMITDUP
2023-03-24 12:08:45 +00:00
c0afc79d4e
Use OK() and ERR() in unit tests
...
Also remove prefixes and trailing new lines in err() and die()
2023-03-24 12:08:45 +00:00
9a4a4a0005
Remove bay_remove()
2023-03-24 12:08:45 +00:00
b42fb4d2f3
Check prv_* return values
2023-03-24 12:08:45 +00:00
6deef0308a
Fix underflow in path_remove_trailing()
2023-03-24 12:08:45 +00:00
e625897766
Add CHAN_IGNORE_DUP to ignore duplicates
2023-03-24 12:08:45 +00:00
ab3e823134
Rename CHAN_DUPLICATES to CHAN_ALLOW_DUP
2023-03-24 12:08:45 +00:00
f61711047c
Remove buffer argument from value_str()
...
Use a ring of buffers instead, so we can printf() up to 16 values in
the same call.
2023-03-24 12:08:45 +00:00
82f1cc287d
Update copyright years to 2021-2023
2023-03-24 12:08:45 +00:00
eb8d10771b
Indent #pragma statements
2023-03-24 12:08:45 +00:00
4c7b44510a
Remove empty tests
2023-03-24 12:08:45 +00:00
a4452dee8c
Use OK() and ERR() macros in cpu and loom tests
...
Some return checks were missing too.
2023-03-24 12:08:45 +00:00
78c4bba62e
Match the PRV event in delayed-connect-ss test
...
Ensures the delayed connect of the CPU and thread muxes still causes the
output to be updated properly.
2023-03-24 12:08:45 +00:00
c57bef14a3
Add switch-same-type emu test for Nanos6
2023-03-24 12:08:45 +00:00
aab6808f4e
Ensure the appid and the rank are emitted too
2023-03-24 12:08:45 +00:00
246e3cfeab
Fail on first error in post scripts
2023-03-24 12:08:45 +00:00
34c9f34f04
Get the gid from nanos6 task types too
2023-03-24 12:08:45 +00:00
4aebe81940
Document ss-mismatch nanos6 test
2023-03-24 12:08:45 +00:00
97dac6e83b
Add switch-same-type nosv test
...
Generates a script with the values of the delta clock, PRV type and
value to be matched in the .prv traces, to ensure the emulator emitted
the switching type event.
2023-03-24 12:08:45 +00:00
64360796b9
Run any script found in the test workdir
...
Allows the test to perform additional checks on the generated trace.
2023-03-24 12:08:45 +00:00
803945dbc8
Return the gid of the created type
2023-03-24 12:08:45 +00:00
864ce4222f
Store the first and last clock of emu events
...
Allows the tests to know the relative clock that will appear in the PRV
trace (with one rank only).
2023-03-24 12:08:45 +00:00
0eb88af4b9
Use the CPU phyid for the name only
...
The logical index is used to change the affinity of the threads.
2023-03-24 12:08:45 +00:00
69506e5079
Update burst test regex
2023-03-24 12:08:45 +00:00
65ecc75afd
Sort unit tests by name
2023-03-24 12:08:45 +00:00
98b698473d
Remove unused unit tests
2023-03-24 12:08:45 +00:00
899b82c36f
Update flush-overhead too
2023-03-24 12:08:45 +00:00
7b80aa6aaf
Instrument running thread in sort and flush tests
2023-03-24 12:08:45 +00:00
9407616c2b
Add Nanos6 spawn task rt tests
2023-03-24 12:08:45 +00:00
b98ccfe3ad
Use row and type as identifiers in prv_register()
...
Prevents multiple channels from being accidentally set to the same row
with the same type.
2023-03-24 12:08:45 +00:00
1c90947f82
Remove unused select function from mux unit test
2023-03-24 12:08:45 +00:00
5b980734ed
Add unit test cases for thread init
2023-03-24 12:08:45 +00:00
7bbd74cb17
Add common unit test macros
2023-03-24 12:08:45 +00:00
e06651bbb6
Disable hash speed test
...
We no longer use the hash for the mux inputs, so during emulation is not
a performance bottleneck.
2023-03-24 12:08:45 +00:00
7ba810fd4a
Set the thread->proc in proc_add_thread()
2023-03-24 12:08:45 +00:00
3a4722a83e
Add delayed connect unit test for mux
2023-03-24 12:08:45 +00:00
b265442b8c
Mark select channel as dirty on mux_init()
...
Ensures that the select callback will be called on the propagation
phase, immediately setting the right output. Otherwise the mux won't be
updated until the select channel sets a new value.
2023-03-24 12:08:45 +00:00
4a1fba74f3
Update bay unit test
2023-03-24 12:08:45 +00:00
fe6db823a7
Index mux inputs by an integer
2023-03-24 12:08:45 +00:00
3da9e27190
Skip "loom." prefix from hostname
2023-03-24 12:08:45 +00:00
28517c2000
Add another subsystem between nested tasks
2023-03-24 12:08:45 +00:00
e3339fef3b
Increase sort window
2023-03-24 12:08:45 +00:00
f76d160c69
Copy Paraver configs to output directory
2023-03-24 12:08:45 +00:00
451d4be386
Port ovnisort
2023-03-24 12:08:45 +00:00
cd39230089
Remove boilerplate from the models
2023-03-24 12:08:45 +00:00
02db4b6369
Add support for NODES
2023-03-24 12:08:45 +00:00
8727126551
Use .obs extension for ovni binary streams
2023-03-24 12:08:45 +00:00
0746d2a0ec
Add CPU oversubscription test
2023-03-24 12:08:45 +00:00
a818795d88
Add support for nOS-V
...
Most of the model is taken from nanos6, we should refactor them.
2023-03-24 12:08:45 +00:00
e344044b43
Use OB. for flush overhead test
2023-03-24 12:08:45 +00:00