13514552eSAlex Bennée /* 23514552eSAlex Bennée * logging unit-tests 33514552eSAlex Bennée * 43514552eSAlex Bennée * Copyright (C) 2016 Linaro Ltd. 53514552eSAlex Bennée * 63514552eSAlex Bennée * Author: Alex Bennée <alex.bennee@linaro.org> 73514552eSAlex Bennée * 83514552eSAlex Bennée * Permission is hereby granted, free of charge, to any person obtaining a copy 93514552eSAlex Bennée * of this software and associated documentation files (the "Software"), to deal 103514552eSAlex Bennée * in the Software without restriction, including without limitation the rights 113514552eSAlex Bennée * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 123514552eSAlex Bennée * copies of the Software, and to permit persons to whom the Software is 133514552eSAlex Bennée * furnished to do so, subject to the following conditions: 143514552eSAlex Bennée * 153514552eSAlex Bennée * The above copyright notice and this permission notice shall be included in 163514552eSAlex Bennée * all copies or substantial portions of the Software. 173514552eSAlex Bennée * 183514552eSAlex Bennée * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 193514552eSAlex Bennée * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 203514552eSAlex Bennée * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 213514552eSAlex Bennée * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 223514552eSAlex Bennée * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 233514552eSAlex Bennée * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 243514552eSAlex Bennée * THE SOFTWARE. 253514552eSAlex Bennée */ 263514552eSAlex Bennée 273514552eSAlex Bennée #include "qemu/osdep.h" 283514552eSAlex Bennée 293514552eSAlex Bennée #include "qemu-common.h" 30bd6fee9fSMarkus Armbruster #include "qapi/error.h" 31bd6fee9fSMarkus Armbruster #include "qemu/log.h" 323514552eSAlex Bennée 333514552eSAlex Bennée static void test_parse_range(void) 343514552eSAlex Bennée { 35bd6fee9fSMarkus Armbruster Error *err = NULL; 36bd6fee9fSMarkus Armbruster 37bd6fee9fSMarkus Armbruster qemu_set_dfilter_ranges("0x1000+0x100", &error_abort); 383514552eSAlex Bennée 393514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0xfff)); 403514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 413514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1001)); 423514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x10ff)); 433514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1100)); 443514552eSAlex Bennée 45bd6fee9fSMarkus Armbruster qemu_set_dfilter_ranges("0x1000-0x100", &error_abort); 463514552eSAlex Bennée 473514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1001)); 483514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 493514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x0f01)); 503514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x0f00)); 513514552eSAlex Bennée 52bd6fee9fSMarkus Armbruster qemu_set_dfilter_ranges("0x1000..0x1100", &error_abort); 533514552eSAlex Bennée 543514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0xfff)); 553514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 563514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1100)); 573514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1101)); 583514552eSAlex Bennée 59bd6fee9fSMarkus Armbruster qemu_set_dfilter_ranges("0x1000..0x1000", &error_abort); 603514552eSAlex Bennée 613514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0xfff)); 623514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1000)); 633514552eSAlex Bennée g_assert_false(qemu_log_in_addr_range(0x1001)); 643514552eSAlex Bennée 65bd6fee9fSMarkus Armbruster qemu_set_dfilter_ranges("0x1000+0x100,0x2100-0x100,0x3000..0x3100", 66bd6fee9fSMarkus Armbruster &error_abort); 673514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x1050)); 683514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x2050)); 693514552eSAlex Bennée g_assert(qemu_log_in_addr_range(0x3050)); 70bd6fee9fSMarkus Armbruster 71*58e19e6eSMarkus Armbruster qemu_set_dfilter_ranges("0xffffffffffffffff-1", &error_abort); 72*58e19e6eSMarkus Armbruster g_assert(qemu_log_in_addr_range(UINT64_MAX)); 73*58e19e6eSMarkus Armbruster g_assert_false(qemu_log_in_addr_range(UINT64_MAX - 1)); 74*58e19e6eSMarkus Armbruster 75*58e19e6eSMarkus Armbruster qemu_set_dfilter_ranges("0..0xffffffffffffffff", &err); 76*58e19e6eSMarkus Armbruster error_free_or_abort(&err); 77*58e19e6eSMarkus Armbruster 78*58e19e6eSMarkus Armbruster qemu_set_dfilter_ranges("2..1", &err); 79*58e19e6eSMarkus Armbruster error_free_or_abort(&err); 80*58e19e6eSMarkus Armbruster 81bd6fee9fSMarkus Armbruster qemu_set_dfilter_ranges("0x1000+onehundred", &err); 82bd6fee9fSMarkus Armbruster error_free_or_abort(&err); 83bd6fee9fSMarkus Armbruster 84bd6fee9fSMarkus Armbruster qemu_set_dfilter_ranges("0x1000+0", &err); 85bd6fee9fSMarkus Armbruster error_free_or_abort(&err); 863514552eSAlex Bennée } 873514552eSAlex Bennée 88f6880b7fSAlex Bennée static void test_parse_path(void) 89f6880b7fSAlex Bennée { 90daa76aa4SMarkus Armbruster Error *err = NULL; 91daa76aa4SMarkus Armbruster 92daa76aa4SMarkus Armbruster qemu_set_log_filename("/tmp/qemu.log", &error_abort); 93daa76aa4SMarkus Armbruster qemu_set_log_filename("/tmp/qemu-%d.log", &error_abort); 94daa76aa4SMarkus Armbruster qemu_set_log_filename("/tmp/qemu.log.%d", &error_abort); 95daa76aa4SMarkus Armbruster 96daa76aa4SMarkus Armbruster qemu_set_log_filename("/tmp/qemu-%d%d.log", &err); 97daa76aa4SMarkus Armbruster error_free_or_abort(&err); 98f6880b7fSAlex Bennée } 993514552eSAlex Bennée 1003514552eSAlex Bennée int main(int argc, char **argv) 1013514552eSAlex Bennée { 1023514552eSAlex Bennée g_test_init(&argc, &argv, NULL); 1033514552eSAlex Bennée 1043514552eSAlex Bennée g_test_add_func("/logging/parse_range", test_parse_range); 105f6880b7fSAlex Bennée g_test_add_func("/logging/parse_path", test_parse_path); 1063514552eSAlex Bennée 1073514552eSAlex Bennée return g_test_run(); 1083514552eSAlex Bennée } 109