summaryrefslogtreecommitdiffstats
path: root/test/parser/utils.c
Commit message (Collapse)AuthorAgeFilesLines
* pb-config: Move config storage modules to "platform" modules in discover codeJeremy Kerr2014-01-301-2/+16
| | | | | | | | | | | | | | | | | | There's no need to include the config storage code in lib/ as only the discover server should be using it. This change moves the config-storage code to discover/, with the platform-specific parts moved to a 'struct platform'. Each platform has a probe function, which is called during init. The first probe function to return a platform is used. At present we only have the one platform, but it's now non-intrusive to add others. We keep an array of platform pointers in a separate ("platforms") section, to allow the test module to drop-in its own test "platform". Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover: Add support for checking directories in parser APIJeremy Kerr2014-01-301-0/+38
| | | | | | | | | | | | | This change adds a function to the parser API: int parser_check_dir(struct discover_context *ctx, struct discover_device *dev, const char *dirname) - which allows parsers to check for the presence of a directory (path of 'dirname') on the device ('dev'). We use this in the GRUB2 parser to implement the `test -d` check. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Check for full URLs in parser testsJeremy Kerr2014-01-171-3/+7
| | | | | | | | | | | | At present, we only match the 'file' portion of a URL in the parser tests, so we "serve" a file if just the filename (but not the scheme, hostname or path) matches the file we set with test_read_conf_embedded. This change introduces test_read_conf_embedded_url, which we can use to specify a full URL. In this case, the fake parser_request_file matches the entire URL before returning the file data. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/device-handler: Ensure we free unresolved boot options on removeJeremy Kerr2013-12-021-0/+15
| | | | | | | | | | When we remove a device, some options may still be unresolved, and so won't be deallocated through freeing the device. This chagne explicitly removes & frees any currently-unresolved options for this device. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Update test cases as per new parser requesting conf filesNeelesh Gupta2013-11-061-15/+49
| | | | | | | | | | Update the parser test code/cases as per new prototyping of parse() function which doesn't require buf and len to be passed from the caller, instead reading the configuration data either embedded or from file to a parser's known conffile. Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add check_file_contentsJeremy Kerr2013-10-041-5/+69
| | | | | | | We want to test grub2's save_env command, which requires a new function to check the contents of a file. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover: Add device_{request,release}_writeJeremy Kerr2013-10-011-0/+30
| | | | | | | | Add a pair of functions to the parser API to allow write access to the underlying device. We'll use this in the GRUB2 parser to implement environment persistence. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover: Add parser_request_fileJeremy Kerr2013-10-011-0/+44
| | | | | | Add a function to allow parsers to access files on a local device. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover: Add test_data member to struct discover_contextJeremy Kerr2013-10-011-0/+1
| | | | | | | | We have parsers passing discover_contexts around, which we want to hook into the test framework. Add a void * member, which the test code can use to reference the test. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover: Allow for already-mounted devicesJeremy Kerr2013-10-011-0/+1
| | | | | | | | | | | When we start the discover server, we may find that devices are already mounted. In this case, mount_device will fail, and we'll abort the parse. This change uses /proc/self/mounts to check if new devices are already mounted, and uses the existing mount point. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Allow checks for NULL boot_argsJeremy Kerr2013-09-241-0/+3
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: check for multiple default optionsJeremy Kerr2013-09-201-2/+11
| | | | | | | Update check_boot_option_count to check if a parser returned more than one boot option with is_default set. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover: Remove unnecessary event passingJeremy Kerr2013-09-191-11/+9
| | | | | | | | | | | | | | | Currently, we pass "events" between the udev, user-event and device-handler layers. These events all get sent through device_handler_event, then de-multiplexed to an appropriate handler, depending on their source. Instead, just export relevant device_handler functions, and have the (old) event sources call these functions directly. This also means we can include a lot more of the device hander code in the parser tests. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/yaboot: implement default optionsJeremy Kerr2013-08-071-0/+10
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add check_resolved_url_resourceJeremy Kerr2013-07-231-0/+20
| | | | | | Add a check for external URL resources. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add test_set_conf_source()Jeremy Kerr2013-07-041-0/+6
| | | | | | | For non-local parsers (ie, PXE), we need to have the conf_url set. This change adds a function to provide the originating URL. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover: implement default bootingJeremy Kerr2013-06-241-1/+1
| | | | | | | When we see a boot option with is_default set, store it in the handler and register a timeout waiter. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: cleanup parser allocations on exitJeremy Kerr2013-05-201-0/+8
| | | | | | | | | | | | | | | | | | | | | | | We should talloc_free the parser list once we're done, enabling valgrind's leak check. Before: [jk@pablo parser]$ valgrind ./test-null ... ==9330== HEAP SUMMARY: ==9330== in use at exit: 288 bytes in 3 blocks ==9330== total heap usage: 11 allocs, 8 frees, 1,177 bytes allocated After: [jk@pablo parser]$ valgrind ./test-null ... ==9940== HEAP SUMMARY: ==9940== in use at exit: 0 bytes in 0 blocks ==9940== total heap usage: 11 allocs, 11 frees, 1,177 bytes allocated ==9940== ==9940== All heap blocks were freed -- no leaks are possible Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add check_not_present_resourceGeoff Levand2013-05-181-0/+7
| | | | | | | | | | | Add a new routine check_not_present_resource() to check that a resource is not present. This is typically used to check that an initrd entry has not been found. Also add any needed checks for no initrd to the existing tests. Signed-off-by: Geoff Levand <geoff@infradead.org>
* parser: Use list to hold parsersGeoff Levand2013-05-171-18/+16
| | | | | | | Now that we dynamically add parsers, we can use a list to hold them. Also simplifies the test_run_parser() routine. Signed-off-by: Geoff Levand <geoff@infradead.org>
* test/parser: Better message outputGeoff Levand2013-05-171-6/+7
| | | | Signed-off-by: Geoff Levand <geoff@infradead.org>
* test/parser: Add test device hotplug functionsJeremy Kerr2013-05-161-0/+35
| | | | | | | | Add a function, test_hotplug_device(), to simulate the addition of devices during tests. This should make it possible to observe boot options' resources changing from unresolved state to resolved. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add resource check helpersJeremy Kerr2013-05-161-0/+34
| | | | | | | Add check_resolved_local_resource and check_unresolved_resource to check the resources returned from parsers. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add check_name helperJeremy Kerr2013-05-161-0/+14
| | | | | | Simple function to check a boot_option's name. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add check_args helperJeremy Kerr2013-05-161-0/+21
| | | | | | Add a small helper to check boot option arguments. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Add check_boot_option_count helper & get_boot_optionJeremy Kerr2013-05-161-0/+39
| | | | | | | Add a helper function to check the expected boot option counts, and print the boot option details if the check fails. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Error on invalid parser nameJeremy Kerr2013-05-161-0/+5
| | | | | | | We should error-out if we didn't find a valid parser, so it doesn't look like we found no boot options. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test/parser: Allow tests to provide pre-loaded config dataJeremy Kerr2013-05-161-0/+7
| | | | | | | Some tests may want to use an existing buffer as config data, so add test_read_config_data() to allow this. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* test: Replace parser tests with empty frameworkJeremy Kerr2013-05-161-0/+130
This change is a major rework of the parser tests. Currently, the parser tests just run the parsers on each subdir of data/, but we don't actually check the results. Rather than just running parsers and expecting a certain fixed output, the new tests are arbitraty (short!) C programs. This allows us to set up the device configuration / discover context etc in whatever manner necessary, and check that the boot options that the parsers emit are correct. This change removes all of the old tests, and adds a new "null" test. Actual tests will be added in subsequent changes. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
OpenPOWER on IntegriCloud