2020-08-05 11:03:11 +02:00
extends Node
2020-11-07 17:36:23 +01:00
const screen_size = Vector2 ( 1024 , 600 )
2020-10-29 08:52:56 +01:00
2020-12-04 13:50:02 +01:00
var start_time : int
var last_time : int
2020-11-07 17:36:23 +01:00
2020-12-04 13:50:02 +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
2020-12-13 21:08:29 +01:00
var time_to_show : int = 15 * 1000 # How long test works in miliseconds
2020-08-05 11:03:11 +02:00
2020-12-04 13:50:02 +01:00
var time_for_each_step : int = - 1
2020-11-17 19:21:50 +01:00
# Each scene runs alone
const alone_steps : Array = [
" res://MainScenes/Control.tscn " ,
" res://MainScenes/Node2D.tscn " ,
" res://MainScenes/Other.tscn " ,
" res://MainScenes/Spatial.tscn " ,
" res://Physics/2D/Physics2D.tscn " ,
" res://Physics/3D/Physics3D.tscn " ,
" res://Rendering/Lights2D/Lights2D.tscn " ,
" res://Rendering/Lights3D/Lights3D.tscn " ,
2021-01-26 19:05:31 +01:00
" res://ReparentingDeleting/ReparentingDeleting.tscn " ,
2021-01-13 16:58:14 +01:00
" res://Text/Text.tscn " ,
2020-11-17 19:21:50 +01:00
]
# All scenes run in one step
# This should be put regression scripts which needs to run only once
const all_in_one : Array = [
" res://AIO/Operators/Operators.tscn " ,
2021-01-15 16:24:46 +01:00
#"res://AIO/AllNodes/ALL.tscn",
2020-11-17 19:21:50 +01:00
]
func _init ( ) :
2020-12-13 21:08:29 +01:00
start_time = OS . get_ticks_msec ( )
2020-12-04 13:50:02 +01:00
2020-11-17 19:21:50 +01:00
# In case when user doesn't provide time
time_for_each_step = time_to_show / ( alone_steps . size ( ) + 1 )
2020-08-05 11:03:11 +02:00
for argument in OS . get_cmdline_args ( ) :
2021-01-12 09:06:16 +01:00
if argument . is_valid_float ( ) : # Ignore all non numeric arguments
time_to_show = int ( argument . to_float ( ) * 1000 )
time_for_each_step = time_to_show / ( alone_steps . size ( ) + 1 )
print ( " Time set to: " + str ( time_to_show / 1000.0 ) + " seconds with " + str ( alone_steps . size ( ) + 1 ) + " steps, each step will take " + str ( time_for_each_step / 1000.0 ) + " seconds. " )
break # We only need to take first argument
2020-08-05 11:03:11 +02:00
2020-11-07 17:36:23 +01:00
func _process ( delta : float ) - > void :
2020-12-13 21:08:29 +01:00
var current_run_time : int = OS . get_ticks_msec ( ) - start_time
2020-12-04 13:50:02 +01:00
2021-01-13 16:58:14 +01:00
while current_run_time > time_to_print_next_time : # This will allow to properly regulate time under heavy operations(e.g. Thread sanitizer)
2020-12-04 13:50:02 +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 19:21:50 +01:00
if current_run_time > time_to_show :
2020-12-26 10:41:59 +01:00
print ( " ######################## Ending test ######################## " )
2020-08-05 11:03:11 +02:00
get_tree ( ) . quit ( )