S03-H3 CLOSED baseline
This commit is contained in:
Executable
+224
@@ -0,0 +1,224 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u
|
||||
|
||||
SUITE="/home/dariodf/Scrivania/MARTE/marte-benchmark-suite"
|
||||
|
||||
SOURCE_CONFIG="$SUITE/configurations/generated/S01/from_patcher/smoke_s1_timing_from_s00.marte"
|
||||
OUTPUT_DIR="$SUITE/configurations/generated/S02/from_patcher"
|
||||
OUTPUT_CONFIG="$OUTPUT_DIR/smoke_s2_binary_recording_from_s01.marte"
|
||||
|
||||
EXPECTED_SOURCE_SHA256="1513e1ca72eba56d53079ac7328908f12ddc72772456e2d75bcbacb6465d2427"
|
||||
|
||||
if [ ! -f "$SOURCE_CONFIG" ]; then
|
||||
printf "SOURCE_STATUS=NOT_FOUND\n"
|
||||
printf "SOURCE_CONFIG=%s\n" "$SOURCE_CONFIG"
|
||||
exit 20
|
||||
fi
|
||||
|
||||
ACTUAL_SOURCE_SHA256="$(sha256sum -- "$SOURCE_CONFIG" | awk '{print $1}')"
|
||||
|
||||
printf "SOURCE_CONFIG=%s\n" "$SOURCE_CONFIG"
|
||||
printf "EXPECTED_SOURCE_SHA256=%s\n" "$EXPECTED_SOURCE_SHA256"
|
||||
printf "ACTUAL_SOURCE_SHA256=%s\n" "$ACTUAL_SOURCE_SHA256"
|
||||
|
||||
if [ "$ACTUAL_SOURCE_SHA256" != "$EXPECTED_SOURCE_SHA256" ]; then
|
||||
printf "SOURCE_HASH_STATUS=MISMATCH\n"
|
||||
exit 21
|
||||
fi
|
||||
|
||||
printf "SOURCE_HASH_STATUS=MATCH\n"
|
||||
|
||||
mkdir -p -- "$OUTPUT_DIR"
|
||||
|
||||
TEMP_CONFIG="$(mktemp "$OUTPUT_DIR/.s02_candidate_XXXXXX.marte")"
|
||||
|
||||
if [ -z "$TEMP_CONFIG" ]; then
|
||||
printf "TEMPORARY_FILE_STATUS=FAIL\n"
|
||||
exit 22
|
||||
fi
|
||||
|
||||
trap 'rm -f -- "$TEMP_CONFIG"' EXIT
|
||||
|
||||
python3 - "$SOURCE_CONFIG" "$TEMP_CONFIG" <<'PY'
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
source = Path(sys.argv[1])
|
||||
destination = Path(sys.argv[2])
|
||||
|
||||
text = source.read_text(encoding="utf-8")
|
||||
|
||||
for forbidden in (
|
||||
"+IOGAM_Writer =",
|
||||
"+FileWriter =",
|
||||
"__MARTE_RUN_DIR__",
|
||||
):
|
||||
if forbidden in text:
|
||||
print("SOURCE_ALREADY_CONTAINS_S02_CONTENT=" + forbidden)
|
||||
sys.exit(30)
|
||||
|
||||
writer_gam = """ +IOGAM_Writer = {
|
||||
Class = IOGAM
|
||||
InputSignals = {
|
||||
Counter = {
|
||||
DataSource = DDB1
|
||||
Type = uint32
|
||||
}
|
||||
Time = {
|
||||
DataSource = DDB1
|
||||
Type = uint32
|
||||
}
|
||||
State1_Thread1_CycleTime = {
|
||||
Alias = State1.Thread1_CycleTime
|
||||
DataSource = Timings
|
||||
Type = uint32
|
||||
}
|
||||
}
|
||||
OutputSignals = {
|
||||
Counter = {
|
||||
DataSource = FileWriter
|
||||
Type = uint32
|
||||
}
|
||||
Time = {
|
||||
DataSource = FileWriter
|
||||
Type = uint32
|
||||
}
|
||||
State1_Thread1_CycleTime = {
|
||||
DataSource = FileWriter
|
||||
Type = uint32
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
file_writer = """ +FileWriter = {
|
||||
Class = FileDataSource::FileWriter
|
||||
NumberOfBuffers = 100
|
||||
CPUMask = 0x1
|
||||
StackSize = 10000000
|
||||
Filename = "__MARTE_RUN_DIR__/s02_output.bin"
|
||||
Overwrite = "yes"
|
||||
FileFormat = "binary"
|
||||
StoreOnTrigger = 0
|
||||
RefreshContent = 0
|
||||
Signals = {
|
||||
Counter = {
|
||||
Type = uint32
|
||||
}
|
||||
Time = {
|
||||
Type = uint32
|
||||
}
|
||||
State1_Thread1_CycleTime = {
|
||||
Type = uint32
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
patched, functions_count = re.subn(
|
||||
r"(?m)^ }\n \+Data = \{\n",
|
||||
writer_gam + " }\n +Data = {\n",
|
||||
text,
|
||||
count=1,
|
||||
)
|
||||
|
||||
patched, data_count = re.subn(
|
||||
r"(?m)^ }\n \+States = \{\n",
|
||||
file_writer + " }\n +States = {\n",
|
||||
patched,
|
||||
count=1,
|
||||
)
|
||||
|
||||
patched, thread_count = re.subn(
|
||||
r"Functions = \{GAMTimer GAMDisplay\}",
|
||||
"Functions = {GAMTimer GAMDisplay IOGAM_Writer}",
|
||||
patched,
|
||||
count=1,
|
||||
)
|
||||
|
||||
print("FUNCTIONS_TRANSFORM_COUNT=" + str(functions_count))
|
||||
print("DATA_TRANSFORM_COUNT=" + str(data_count))
|
||||
print("THREAD_TRANSFORM_COUNT=" + str(thread_count))
|
||||
|
||||
if (functions_count, data_count, thread_count) != (1, 1, 1):
|
||||
print("TRANSFORM_STATUS=FAIL")
|
||||
sys.exit(31)
|
||||
|
||||
checks = {
|
||||
"IOGAM_WRITER_COUNT": patched.count("+IOGAM_Writer ="),
|
||||
"FILE_WRITER_COUNT": patched.count("+FileWriter ="),
|
||||
"FILE_WRITER_CLASS_COUNT": patched.count("Class = FileDataSource::FileWriter"),
|
||||
"PLAIN_FILE_WRITER_CLASS_COUNT": patched.count("Class = FileWriter"),
|
||||
"FILEWRITER_OUTPUT_COUNT": patched.count("DataSource = FileWriter"),
|
||||
"RUN_DIR_PLACEHOLDER_COUNT": patched.count("__MARTE_RUN_DIR__"),
|
||||
"BINARY_FORMAT_COUNT": patched.count('FileFormat = "binary"'),
|
||||
"OVERWRITE_YES_COUNT": patched.count('Overwrite = "yes"'),
|
||||
"CONTINUOUS_MODE_COUNT": patched.count("StoreOnTrigger = 0"),
|
||||
}
|
||||
|
||||
for name, value in checks.items():
|
||||
print(name + "=" + str(value))
|
||||
|
||||
expected = {
|
||||
"IOGAM_WRITER_COUNT": 1,
|
||||
"FILE_WRITER_COUNT": 1,
|
||||
"FILE_WRITER_CLASS_COUNT": 1,
|
||||
"PLAIN_FILE_WRITER_CLASS_COUNT": 0,
|
||||
"FILEWRITER_OUTPUT_COUNT": 3,
|
||||
"RUN_DIR_PLACEHOLDER_COUNT": 1,
|
||||
"BINARY_FORMAT_COUNT": 1,
|
||||
"OVERWRITE_YES_COUNT": 1,
|
||||
"CONTINUOUS_MODE_COUNT": 1,
|
||||
}
|
||||
|
||||
if checks != expected:
|
||||
print("STRUCTURAL_CHECK_STATUS=FAIL")
|
||||
sys.exit(32)
|
||||
|
||||
required_thread = "Functions = {GAMTimer GAMDisplay IOGAM_Writer}"
|
||||
|
||||
if patched.count(required_thread) != 1:
|
||||
print("THREAD_FUNCTION_LIST_STATUS=FAIL")
|
||||
sys.exit(33)
|
||||
|
||||
destination.write_text(patched, encoding="utf-8")
|
||||
|
||||
print("STRUCTURAL_CHECK_STATUS=PASS")
|
||||
print("TRANSFORM_STATUS=PASS")
|
||||
PY
|
||||
|
||||
PYTHON_RC=$?
|
||||
|
||||
if [ "$PYTHON_RC" -ne 0 ]; then
|
||||
printf "PYTHON_TRANSFORM_EXIT_CODE=%s\n" "$PYTHON_RC"
|
||||
exit 23
|
||||
fi
|
||||
|
||||
if [ -f "$OUTPUT_CONFIG" ]; then
|
||||
if cmp -s -- "$TEMP_CONFIG" "$OUTPUT_CONFIG"; then
|
||||
printf "OUTPUT_STATUS=ALREADY_VALID\n"
|
||||
printf "OUTPUT_CONFIG=%s\n" "$OUTPUT_CONFIG"
|
||||
printf "OUTPUT_SHA256=%s\n" \
|
||||
"$(sha256sum -- "$OUTPUT_CONFIG" | awk '{print $1}')"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
printf "OUTPUT_STATUS=EXISTS_BUT_DIFFERS\n"
|
||||
printf "OUTPUT_CONFIG=%s\n" "$OUTPUT_CONFIG"
|
||||
exit 24
|
||||
fi
|
||||
|
||||
chmod 0644 "$TEMP_CONFIG"
|
||||
|
||||
if ! mv -- "$TEMP_CONFIG" "$OUTPUT_CONFIG"; then
|
||||
printf "OUTPUT_STATUS=PUBLISH_FAILED\n"
|
||||
exit 25
|
||||
fi
|
||||
|
||||
trap - EXIT
|
||||
|
||||
printf "OUTPUT_STATUS=CREATED\n"
|
||||
printf "OUTPUT_CONFIG=%s\n" "$OUTPUT_CONFIG"
|
||||
printf "OUTPUT_SHA256=%s\n" \
|
||||
"$(sha256sum -- "$OUTPUT_CONFIG" | awk '{print $1}')"
|
||||
Reference in New Issue
Block a user