mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 04:06:46 +00:00 
			
		
		
		
	 da668aa15b
			
		
	
	
		da668aa15b
		
	
	
	
	
		
			
			The main tests directory still looks very crowded, and it's not clear which files are part of a unit tests and which belong to a different test subsystem. Let's clean up the mess and move the unit tests to a separate directory. Message-Id: <20210310063314.1049838-1-thuth@redhat.com> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Timed average computation tests
 | |
|  *
 | |
|  * Copyright Nodalink, EURL. 2014
 | |
|  *
 | |
|  * Authors:
 | |
|  *  Benoît Canet     <benoit.canet@nodalink.com>
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU LGPL, version 2 or later.
 | |
|  * See the COPYING.LIB file in the top-level directory.
 | |
|  */
 | |
| 
 | |
| #include "qemu/osdep.h"
 | |
| #include "sysemu/cpu-timers.h"
 | |
| #include "qemu/timed-average.h"
 | |
| 
 | |
| /* This is the clock for QEMU_CLOCK_VIRTUAL */
 | |
| static int64_t my_clock_value;
 | |
| 
 | |
| int64_t cpu_get_clock(void)
 | |
| {
 | |
|     return my_clock_value;
 | |
| }
 | |
| 
 | |
| static void account(TimedAverage *ta)
 | |
| {
 | |
|     timed_average_account(ta, 1);
 | |
|     timed_average_account(ta, 5);
 | |
|     timed_average_account(ta, 2);
 | |
|     timed_average_account(ta, 4);
 | |
|     timed_average_account(ta, 3);
 | |
| }
 | |
| 
 | |
| static void test_average(void)
 | |
| {
 | |
|     TimedAverage ta;
 | |
|     uint64_t result;
 | |
|     int i;
 | |
| 
 | |
|     /* we will compute some average on a period of 1 second */
 | |
|     timed_average_init(&ta, QEMU_CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND);
 | |
| 
 | |
|     result = timed_average_min(&ta);
 | |
|     g_assert(result == 0);
 | |
|     result = timed_average_avg(&ta);
 | |
|     g_assert(result == 0);
 | |
|     result = timed_average_max(&ta);
 | |
|     g_assert(result == 0);
 | |
| 
 | |
|     for (i = 0; i < 100; i++) {
 | |
|         account(&ta);
 | |
|         result = timed_average_min(&ta);
 | |
|         g_assert(result == 1);
 | |
|         result = timed_average_avg(&ta);
 | |
|         g_assert(result == 3);
 | |
|         result = timed_average_max(&ta);
 | |
|         g_assert(result == 5);
 | |
|         my_clock_value += NANOSECONDS_PER_SECOND / 10;
 | |
|     }
 | |
| 
 | |
|     my_clock_value += NANOSECONDS_PER_SECOND * 100;
 | |
| 
 | |
|     result = timed_average_min(&ta);
 | |
|     g_assert(result == 0);
 | |
|     result = timed_average_avg(&ta);
 | |
|     g_assert(result == 0);
 | |
|     result = timed_average_max(&ta);
 | |
|     g_assert(result == 0);
 | |
| 
 | |
|     for (i = 0; i < 100; i++) {
 | |
|         account(&ta);
 | |
|         result = timed_average_min(&ta);
 | |
|         g_assert(result == 1);
 | |
|         result = timed_average_avg(&ta);
 | |
|         g_assert(result == 3);
 | |
|         result = timed_average_max(&ta);
 | |
|         g_assert(result == 5);
 | |
|         my_clock_value += NANOSECONDS_PER_SECOND / 10;
 | |
|     }
 | |
| }
 | |
| 
 | |
| int main(int argc, char **argv)
 | |
| {
 | |
|     /* tests in the same order as the header function declarations */
 | |
|     g_test_init(&argc, &argv, NULL);
 | |
|     g_test_add_func("/timed-average/average", test_average);
 | |
|     return g_test_run();
 | |
| }
 | |
| 
 |