Add flush-tmpdir test
This commit is contained in:
		
							parent
							
								
									70e886fcfe
								
							
						
					
					
						commit
						93fdfd51de
					
				| @ -21,3 +21,4 @@ test_emu(empty-stream.c SHOULD_FAIL REGEX "model_ovni_finish: thread .* is not d | |||||||
| test_emu(require-bad-version.c SHOULD_FAIL REGEX "unsupported ovni model version (want 666.66.6, have .*)") | test_emu(require-bad-version.c SHOULD_FAIL REGEX "unsupported ovni model version (want 666.66.6, have .*)") | ||||||
| test_emu(require-compat.c REGEX "loading trace in compatibility mode") | test_emu(require-compat.c REGEX "loading trace in compatibility mode") | ||||||
| test_emu(thread-crash.c SHOULD_FAIL REGEX "incomplete stream") | test_emu(thread-crash.c SHOULD_FAIL REGEX "incomplete stream") | ||||||
|  | test_emu(flush-tmpdir.c MP DRIVER "flush-tmpdir.driver.sh") | ||||||
|  | |||||||
							
								
								
									
										51
									
								
								test/emu/ovni/flush-tmpdir.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								test/emu/ovni/flush-tmpdir.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | |||||||
|  | /* Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
 | ||||||
|  |  * SPDX-License-Identifier: GPL-3.0-or-later */ | ||||||
|  | 
 | ||||||
|  | #include <stdint.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include "instr.h" | ||||||
|  | #include "ovni.h" | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | emit(uint8_t *buf, size_t size) | ||||||
|  | { | ||||||
|  | 	struct ovni_ev ev = {0}; | ||||||
|  | 	ovni_ev_set_mcv(&ev, "OB."); | ||||||
|  | 	ovni_ev_set_clock(&ev, ovni_clock_now()); | ||||||
|  | 	ovni_ev_jumbo_emit(&ev, buf, size); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* Test that we can flush the stream when we are working with a different tmpdir
 | ||||||
|  |  * than the final destination (OVNI_TMPDIR is set). */ | ||||||
|  | 
 | ||||||
|  | int | ||||||
|  | main(void) | ||||||
|  | { | ||||||
|  | 	instr_start(0, 1); | ||||||
|  | 
 | ||||||
|  | 	size_t payload_size = (size_t) (0.9 * (double) OVNI_MAX_EV_BUF); | ||||||
|  | 	uint8_t *payload_buf = calloc(1, payload_size); | ||||||
|  | 
 | ||||||
|  | 	if (!payload_buf) { | ||||||
|  | 		perror("calloc failed"); | ||||||
|  | 		exit(EXIT_FAILURE); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	/* The first should fit, filling 90 % of the buffer */ | ||||||
|  | 	emit(payload_buf, payload_size); | ||||||
|  | 
 | ||||||
|  | 	/* The second event would cause a flush */ | ||||||
|  | 	emit(payload_buf, payload_size); | ||||||
|  | 
 | ||||||
|  | 	/* The third would cause the previous flush events to be written
 | ||||||
|  | 	 * to disk */ | ||||||
|  | 	emit(payload_buf, payload_size); | ||||||
|  | 
 | ||||||
|  | 	/* Flush the last event to disk manually */ | ||||||
|  | 	instr_end(); | ||||||
|  | 
 | ||||||
|  | 	free(payload_buf); | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								test/emu/ovni/flush-tmpdir.driver.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/emu/ovni/flush-tmpdir.driver.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | target=$OVNI_TEST_BIN | ||||||
|  | 
 | ||||||
|  | mkdir tmp | ||||||
|  | export OVNI_TMPDIR=tmp | ||||||
|  | $target | ||||||
|  | ovniemu ovni | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user