1*3514552eSAlex Bennée /* 2*3514552eSAlex Bennée * logging unit-tests 3*3514552eSAlex Bennée * 4*3514552eSAlex Bennée * Copyright (C) 2016 Linaro Ltd. 5*3514552eSAlex Bennée * 6*3514552eSAlex Bennée * Author: Alex Bennée <alex.bennee@linaro.org> 7*3514552eSAlex Bennée * 8*3514552eSAlex Bennée * Permission is hereby granted, free of charge, to any person obtaining a copy 9*3514552eSAlex Bennée * of this software and associated documentation files (the "Software"), to deal 10*3514552eSAlex Bennée * in the Software without restriction, including without limitation the rights 11*3514552eSAlex Bennée * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12*3514552eSAlex Bennée * copies of the Software, and to permit persons to whom the Software is 13*3514552eSAlex Bennée * furnished to do so, subject to the following conditions: 14*3514552eSAlex Bennée * 15*3514552eSAlex Bennée * The above copyright notice and this permission notice shall be included in 16*3514552eSAlex Bennée * all copies or substantial portions of the Software. 17*3514552eSAlex Bennée * 18*3514552eSAlex Bennée * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19*3514552eSAlex Bennée * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20*3514552eSAlex Bennée * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21*3514552eSAlex Bennée * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22*3514552eSAlex Bennée * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23*3514552eSAlex Bennée * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24*3514552eSAlex Bennée * THE SOFTWARE. 25*3514552eSAlex Bennée */ 26*3514552eSAlex Bennée 27*3514552eSAlex Bennée #include "qemu/osdep.h" 28*3514552eSAlex Bennée #include <glib.h> 29*3514552eSAlex Bennée 30*3514552eSAlex Bennée #include "qemu-common.h" 31*3514552eSAlex Bennée #include "include/qemu/log.h" 32*3514552eSAlex Bennée 33*3514552eSAlex Bennée static void test_parse_range(void) 34*3514552eSAlex Bennée { 35*3514552eSAlex Bennée qemu_set_dfilter_ranges("0x1000+0x100"); 36*3514552eSAlex Bennée 37*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0xfff)); 38*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 39*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1001)); 40*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x10ff)); 41*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1100)); 42*3514552eSAlex Bennée 43*3514552eSAlex Bennée qemu_set_dfilter_ranges("0x1000-0x100"); 44*3514552eSAlex Bennée 45*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1001)); 46*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 47*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x0f01)); 48*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x0f00)); 49*3514552eSAlex Bennée 50*3514552eSAlex Bennée qemu_set_dfilter_ranges("0x1000..0x1100"); 51*3514552eSAlex Bennée 52*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0xfff)); 53*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 54*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1100)); 55*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1101)); 56*3514552eSAlex Bennée 57*3514552eSAlex Bennée qemu_set_dfilter_ranges("0x1000..0x1000"); 58*3514552eSAlex Bennée 59*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0xfff)); 60*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 61*3514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1001)); 62*3514552eSAlex Bennée 63*3514552eSAlex Bennée qemu_set_dfilter_ranges("0x1000+0x100,0x2100-0x100,0x3000..0x3100"); 64*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1050)); 65*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x2050)); 66*3514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x3050)); 67*3514552eSAlex Bennée } 68*3514552eSAlex Bennée 69*3514552eSAlex Bennée #ifdef CONFIG_HAS_GLIB_SUBPROCESS_TESTS 70*3514552eSAlex Bennée static void test_parse_invalid_range_subprocess(void) 71*3514552eSAlex Bennée { 72*3514552eSAlex Bennée qemu_set_dfilter_ranges("0x1000+onehundred"); 73*3514552eSAlex Bennée } 74*3514552eSAlex Bennée static void test_parse_invalid_range(void) 75*3514552eSAlex Bennée { 76*3514552eSAlex Bennée g_test_trap_subprocess("/logging/parse_invalid_range/subprocess", 0, 0); 77*3514552eSAlex Bennée g_test_trap_assert_failed(); 78*3514552eSAlex Bennée g_test_trap_assert_stdout(""); 79*3514552eSAlex Bennée g_test_trap_assert_stderr("*Failed to parse range in: 0x1000+onehundred\n"); 80*3514552eSAlex Bennée } 81*3514552eSAlex Bennée static void test_parse_zero_range_subprocess(void) 82*3514552eSAlex Bennée { 83*3514552eSAlex Bennée qemu_set_dfilter_ranges("0x1000+0"); 84*3514552eSAlex Bennée } 85*3514552eSAlex Bennée static void test_parse_zero_range(void) 86*3514552eSAlex Bennée { 87*3514552eSAlex Bennée g_test_trap_subprocess("/logging/parse_zero_range/subprocess", 0, 0); 88*3514552eSAlex Bennée g_test_trap_assert_failed(); 89*3514552eSAlex Bennée g_test_trap_assert_stdout(""); 90*3514552eSAlex Bennée g_test_trap_assert_stderr("*Failed to parse range in: 0x1000+0\n"); 91*3514552eSAlex Bennée } 92*3514552eSAlex Bennée #endif 93*3514552eSAlex Bennée 94*3514552eSAlex Bennée int main(int argc, char **argv) 95*3514552eSAlex Bennée { 96*3514552eSAlex Bennée g_test_init(&argc, &argv, NULL); 97*3514552eSAlex Bennée 98*3514552eSAlex Bennée g_test_add_func("/logging/parse_range", test_parse_range); 99*3514552eSAlex Bennée #ifdef CONFIG_HAS_GLIB_SUBPROCESS_TESTS 100*3514552eSAlex Bennée g_test_add_func("/logging/parse_invalid_range/subprocess", test_parse_invalid_range_subprocess); 101*3514552eSAlex Bennée g_test_add_func("/logging/parse_invalid_range", test_parse_invalid_range); 102*3514552eSAlex Bennée g_test_add_func("/logging/parse_zero_range/subprocess", test_parse_zero_range_subprocess); 103*3514552eSAlex Bennée g_test_add_func("/logging/parse_zero_range", test_parse_zero_range); 104*3514552eSAlex Bennée #endif 105*3514552eSAlex Bennée 106*3514552eSAlex Bennée return g_test_run(); 107*3514552eSAlex Bennée } 108