76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
 | 
						|
 * SPDX-License-Identifier: GPL-3.0-or-later */
 | 
						|
 | 
						|
#define _POSIX_C_SOURCE 200809L
 | 
						|
 | 
						|
#include "emu/clkoff.h"
 | 
						|
#include "common.h"
 | 
						|
#include "unittest.h"
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
static int
 | 
						|
test_ok(void)
 | 
						|
{
 | 
						|
	char table_str[] =
 | 
						|
	"rank       hostname             offset_median        offset_mean          offset_std\n"
 | 
						|
	"0          s09r2b21             0                    0.000000             0.000000\n"
 | 
						|
	"1          s09r2b22             -451607967           -451608083.500000    316.087397\n"
 | 
						|
	"2          s09r2b23             4526                 4542.200000          124.33432\n"
 | 
						|
	"3          s09r2b24             342455               342462.300000        342.39755\n";
 | 
						|
 | 
						|
	FILE *f = fmemopen(table_str, ARRAYLEN(table_str), "r");
 | 
						|
 | 
						|
	if (f == NULL)
 | 
						|
		die("fmemopen failed:");
 | 
						|
 | 
						|
	struct clkoff table;
 | 
						|
	clkoff_init(&table);
 | 
						|
	OK(clkoff_load(&table, f));
 | 
						|
 | 
						|
	if (clkoff_count(&table) != 4)
 | 
						|
		die("clkoff_count failed");
 | 
						|
 | 
						|
	struct clkoff_entry *entry = clkoff_get(&table, 3);
 | 
						|
	if (entry == NULL)
 | 
						|
		die("clkoff_get returned NULL");
 | 
						|
 | 
						|
	if (entry->index != 3)
 | 
						|
		die("clkoff_get returned wrong index");
 | 
						|
 | 
						|
	fclose(f);
 | 
						|
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
static int
 | 
						|
test_dup(void)
 | 
						|
{
 | 
						|
	static char table_str[] =
 | 
						|
	"rank       hostname             offset_median        offset_mean          offset_std\n"
 | 
						|
	"0          s09r2b21             0                    0.000000             0.000000\n"
 | 
						|
	"1          s09r2b22             -451607967           -451608083.500000    316.087397\n"
 | 
						|
	"2          s09r2b23             4526                 4542.200000          124.33432\n"
 | 
						|
	"3          s09r2b23             342455               342462.300000        342.39755\n";
 | 
						|
 | 
						|
	FILE *f = fmemopen(table_str, ARRAYLEN(table_str), "r");
 | 
						|
 | 
						|
	if (f == NULL)
 | 
						|
		die("fmemopen failed:");
 | 
						|
 | 
						|
	struct clkoff table;
 | 
						|
 | 
						|
	clkoff_init(&table);
 | 
						|
	ERR(clkoff_load(&table, f));
 | 
						|
 | 
						|
	fclose(f);
 | 
						|
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
int main(void)
 | 
						|
{
 | 
						|
	test_ok();
 | 
						|
	test_dup();
 | 
						|
	return 0;
 | 
						|
}
 |