You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
6.4 KiB
255 lines
6.4 KiB
# License: Apache 2.0. See LICENSE file in root directory.
|
|
# Copyright(c) 2022 Intel Corporation. All Rights Reserved.
|
|
|
|
from rspy import log, test
|
|
from pyrsutils import stabilized_value
|
|
|
|
|
|
#############################################################################################
|
|
#
|
|
test.start( "get 60% stability" )
|
|
#
|
|
# Verify if history is filled with a stable value at the required percentage, the user
|
|
# will get it when asked for even if other inputs exist in history
|
|
#
|
|
try:
|
|
sv = stabilized_value( 10 )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
test.check_equal( sv.get( 0.6 ), 55. );
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
test.start( "change stabilization percent" )
|
|
#
|
|
# Verify that on the same values different 'get' calls with different stabilization percent
|
|
# give the expected value
|
|
#
|
|
try:
|
|
sv = stabilized_value( 5 )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
|
|
sv.add( 2. )
|
|
sv.add( 2. )
|
|
sv.add( 2. )
|
|
sv.add( 2. )
|
|
|
|
test.check_equal( sv.get( 1. ), 1. )
|
|
test.check_equal( sv.get( 0.9 ), 1. )
|
|
test.check_equal( sv.get( 0.8 ), 2. )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
test.start( "empty test" )
|
|
#
|
|
# Verify that empty function works as expected
|
|
#
|
|
try:
|
|
sv = stabilized_value( 5 )
|
|
test.check( sv.empty() )
|
|
test.check( not sv )
|
|
sv.add( 1. )
|
|
test.check_false( sv.empty() )
|
|
sv.clear()
|
|
test.check( sv.empty() )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
test.start( "update stable value" )
|
|
#
|
|
# Verify a stabilized value once the inserted value is flickering between 2 values
|
|
#
|
|
try:
|
|
sv = stabilized_value( 10 )
|
|
# Verify flickering value always report the stable value
|
|
for i in range(100):
|
|
sv.add( 55. )
|
|
sv.add( 60. )
|
|
test.check_equal( sv.get( 0.7 ), 55. )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
test.start( "Illegal input - percentage value too high" )
|
|
#
|
|
# Verify stabilized_value percentage input is at range (0-100] % (zero not included)
|
|
#
|
|
try:
|
|
sv = stabilized_value( 5 )
|
|
sv.add( 55. )
|
|
test.check_throws( lambda: sv.get( 1.1 ), RuntimeError, "illegal stabilization percentage 1.100000" )
|
|
test.check_throws( lambda: sv.get( -1.1 ), RuntimeError, "illegal stabilization percentage -1.100000" )
|
|
test.check_throws( lambda: sv.get( 0.0 ), RuntimeError, "illegal stabilization percentage 0.000000" )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
test.start( "not full history" )
|
|
#
|
|
# Verify if history is not the logic works as expected and the percentage is calculated
|
|
# from the history current size
|
|
#
|
|
try:
|
|
sv = stabilized_value( 30 )
|
|
sv.add( 76. )
|
|
sv.add( 76. )
|
|
sv.add( 76. )
|
|
sv.add( 76. )
|
|
test.check_equal( sv.get( 0.6 ), 76. )
|
|
|
|
sv.add( 45. )
|
|
sv.add( 45. )
|
|
sv.add( 45. )
|
|
sv.add( 45. )
|
|
sv.add( 45. )
|
|
|
|
test.check_equal( sv.get( 0.6 ), 76. )
|
|
sv.add( 45. ) # The stable value should change now (4 * 76.0 + 6 * 45.0 (total 10 values))
|
|
test.check_equal( sv.get( 0.6 ), 45. );
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
test.start( "stable value sanity" )
|
|
#
|
|
# Verify if history is full with a specific value, the stabilized value is always the same
|
|
# no matter what percentage is required
|
|
#
|
|
try:
|
|
sv = stabilized_value( 5 )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
sv.add( 1. )
|
|
|
|
test.check_equal( sv.get( 1. ), 1. )
|
|
test.check_equal( sv.get( 0.4 ), 1. )
|
|
test.check_equal( sv.get( 0.25 ), 1. )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
test.start( "stay with last value" )
|
|
#
|
|
# Verify if history is filled with less stable percantage than required the last stable
|
|
# value is returned
|
|
#
|
|
try:
|
|
sv = stabilized_value( 10 )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
|
|
test.check_equal( sv.get( 0.6 ), 55. )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
# Verify if history is filled with a stable value and then filled with required percentage
|
|
# of new val, new val is returned as stable value.
|
|
#
|
|
test.start( "update stable value - nominal" )
|
|
#
|
|
try:
|
|
sv = stabilized_value( 10 )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 55. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
|
|
test.check_equal( sv.get( 0.6 ), 60. )
|
|
sv.add( 35. )
|
|
sv.add( 35. )
|
|
sv.add( 35. )
|
|
sv.add( 35. )
|
|
sv.add( 35. )
|
|
test.check_equal( sv.get( 0.6 ), 60. )
|
|
|
|
sv.add( 35. )
|
|
test.check_equal( sv.get( 0.6 ), 35. )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
test.start( "update stable value - last stable not in history" )
|
|
try:
|
|
sv = stabilized_value( 10 )
|
|
sv.add( 55. )
|
|
test.check_equal( sv.get( 1. ), 55. );
|
|
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
test.check_equal( sv.get( 1. ), 55. )
|
|
test.check_equal( sv.get( 0.9 ), 60. )
|
|
sv.add( 70. )
|
|
test.check_equal( sv.get( 1. ), 60. )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
test.start( "update stable value - last stable is in history" )
|
|
try:
|
|
sv = stabilized_value( 10 )
|
|
sv.add( 55. )
|
|
sv.add( 60. )
|
|
sv.add( 60. )
|
|
test.check_equal( sv.get( 0.8 ), 55. )
|
|
except:
|
|
test.unexpected_exception()
|
|
test.finish()
|
|
#
|
|
#############################################################################################
|
|
test.print_results_and_exit()
|