regression-test-project/Autoload/Autoload.gd

59 lines
2.0 KiB
GDScript3
Raw Normal View History

2020-08-05 11:03:11 +02:00
extends Node
2020-11-06 16:57:49 +01:00
const screen_size = Vector2(1024, 600)
2020-12-13 19:26:04 +01:00
var start_time : int
var last_time : int
2020-11-06 16:57:49 +01:00
2020-12-13 19:26:04 +01:00
const PRINT_TIME_EVERY_MILISECONDS : int = 5000
var time_to_print_next_time : int = PRINT_TIME_EVERY_MILISECONDS
2020-08-05 11:03:11 +02:00
2021-03-27 15:53:32 +01:00
var time_to_show: int = 25 * 1000 # How long test works in miliseconds
2020-08-05 11:03:11 +02:00
2020-12-13 19:26:04 +01:00
var time_for_each_step : int = -1
2020-11-17 20:10:21 +01:00
2021-04-23 21:50:57 +02:00
var os
2021-04-15 19:13:17 +02:00
2020-11-17 20:10:21 +01:00
# Each scene runs alone
const alone_steps : Array = [
2021-04-04 12:52:42 +02:00
"res://Nodes/Nodes.tscn",
2021-04-23 21:50:57 +02:00
# "res://ReparentingDeleting/ReparentingDeleting.tscn", # Really slow in 4.0
# "res://Physics/2D/Physics2D.tscn", # Too slow still
2021-04-04 12:52:42 +02:00
"res://AutomaticBugs/FunctionExecutor.tscn", # Only Needs to be executed once, but this is workaround a little
2021-04-15 19:13:17 +02:00
# "res://Physics/3D/Physics3D.tscn", # Loads very long but isn't necessarry so we skip it now
2020-11-17 20:10:21 +01:00
]
2021-04-04 12:52:42 +02:00
func _init():
2021-04-23 21:50:57 +02:00
if ClassDB.class_exists("_OS"):
os = ClassDB.instance("_OS")
else:
os = ClassDB.instance("_Platform")
start_time = os.get_ticks_msec()
2020-12-13 19:26:04 +01:00
2021-04-04 12:52:42 +02:00
# In case when user doesn't provide time
time_for_each_step = time_to_show / (alone_steps.size())
2020-11-17 20:10:21 +01:00
2021-04-23 21:50:57 +02:00
for argument in os.get_cmdline_args():
2021-01-11 19:20:11 +01:00
if argument.is_valid_float(): # Ignore all non numeric arguments
time_to_show = int(argument.to_float() * 1000)
2021-03-27 15:53:32 +01:00
time_for_each_step = time_to_show / (alone_steps.size())
print("Time set to: " + str(time_to_show / 1000.0) + " seconds with "+ str(alone_steps.size()) + " steps, each step will take " + str(time_for_each_step / 1000.0) + " seconds.")
2021-01-11 19:20:11 +01:00
break # We only need to take first argument
2020-08-05 11:03:11 +02:00
2020-11-06 16:57:49 +01:00
func _process(delta: float) -> void:
2021-04-23 21:50:57 +02:00
var current_run_time : int = os.get_ticks_msec() - start_time
2020-12-13 19:26:04 +01:00
2021-04-04 12:52:42 +02:00
# While loop instead if, will allow to properly flush results under heavy operations(e.g. Thread sanitizer)
while current_run_time > time_to_print_next_time:
2020-12-13 19:26:04 +01:00
print("Test is running now " + str(int(time_to_print_next_time / 1000)) + " seconds")
time_to_print_next_time += PRINT_TIME_EVERY_MILISECONDS
2020-11-17 20:10:21 +01:00
if current_run_time > time_to_show:
2020-12-29 08:29:25 +01:00
print("######################## Ending test ########################")
2020-08-05 11:03:11 +02:00
get_tree().quit()
2021-04-23 21:50:57 +02:00
func _exit_tree():
os.free()