This release fixes some bugs and add tests improvements.
Bug fixes:
- Fix support for openssl 1.1
- Bash completion for bundle-remove wasn't complete
- Print error message when disk is full on a tarball extration
Tests
- Running static analysis of all bat tests automatically and reported problems
were fixed.
- Test Makefile was problematic and some tests were skiped
- More tests added
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Curl isn't closing urandom and random when using openssl 1.1. As it's something
out of our control and this won't create any resource leak problems, we're not
reporting that anymore.
This fd leak report is triggered when any https download is performed by swupd
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
The purpose must be set explicitly now for the verification to
succeed, and in our case we must use "any" as defined in the generated
certificate purpose.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
The ERR_remove_thread_state() function is deprecated as the thread
handling and many memory management operatoins have been re-written to
be internally handled by the API. The error code should be retrieved
by the proper function now from X509 store contexts.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
Libarchive's archive_error_string() method returns a textual
error message suitable for display.
However, this method returns only "Write Failed" if libarchive
runs out of hard disk space.
Check specifically for ENOSPC and print a correct
warning message to the user.
Signed-off-by: Brian J Lovin <brian.j.lovin@intel.com>
There is a missing line break that shows up When running
the "swupd verify" command and there is a hash mismatch.
The output looks like this:
$ sudo swupd verify
Verifying version 25590
Verifying files
...1%Hash mismatch for file: /usr/bin/tmux
...100%
Inspected 292278 files
1 files did not match
Verify successful
This commit fixes the issue by adding a line break at the
beginning of the output.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
The list is missing a "\" at the end of one test which is causing
a group of tests to be ignored by the makefile, therefore they are
not being run.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Every test should include a unique ID, so it is necessary to have
a way of knowing what is the next available ID for the group of
tests.
This commit helps with that issue by implementing the following
features in the test library:
- Adds the function get_test_list which can be used to print a
list of tests in a specific group directory.
- Adds the function get_next_available_id which return the next
test ID that can be used in a new test.
- When using the generate_test function to generate an empty test
the next available ID will be used for the template.
This commit also adds the ID to a bundle-add test that was missing it.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Configure was printing the error:
14:13:44 ./configure: line 14047: ]: command not found
It was harmless though.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Tests added:
- Check if bundle-list --all is working (because this affect the next tests)
- Check if we can install an old version of clear and update interactively
until last release
- Check if we can install and old version and update to the most recent one
As this test takes a really long time to run, I'm not adding it to the
tests list to be executed to make check, but this can be used to validate
swupd before a release.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Shellcheck is a shell script static analysis tool that looks for errors and
programming pitfalls in shell scripts.
Fixing errors reported by running that tool on bats scripts
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
In order to prevent bundle-remove to list the bundle os-core we were removing
all bundles with os-core in the name. Prevent this by just filtering bundles
named os-core. Also uses find instead of ls|grep because it's more robust.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
When running tests, there is the possibility of preserving your
test environment for debugging purposes.
We were preserving the environment by skipping the execution of
the destroy_test_environment function when the DEBUG_TEST env
variable was set. This had one limitation, this was being done in
the default teardown function, so if the user would define his own
teardown then the DEBUG_TEST had no effect, the same if the user
used global_teardown instead. Another limitation the current
implementation had was that when an environment had been preserved
if the user would forget to clean it up manually before re-running
the test it would cause unexpected results in the test.
This commit removes both limitations by looking for the DEBUG_TEST
variable directly within the destroy_test_environment function so
the env will be preserved regardless of where the function is called
from and removes the environment at the beginning of the test if it
exists.
Closes#651
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
This release fixes a series of bugs and includes improvements into tests and testlibrary API.
Bug fixes:
- Better exit codes and failure messages for swupd commands
- Documentation improvement adding information about os-format in manpages and
systemd unitdir build option in swupd -v
- Using a more robust string to integer conversion in order to prevent overflows
- Report files removed by --picky in verify summary
- Fix verify --fix bug when downgrading to a version with missing bundles.
- Fix memory leaks and invalid memory access when using time report (-t)
- Adding more probes to time report (report total time and post-install script
execution.
- Removing deprecated code for handling the deprecated and unused manifest
deltas
Tests:
- Improvement in testlib documentation
- Adding more tests
- Bug fixes in testlib API
- Support for running tests in a proxy environment
- Webserver consolidation
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Add a timer counter to print how long run_scripts() take on verify and
bundle-add commands. Note that this is already in place for update.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Also fixes the following problems
- Make timelist independent from swupd specific code
- Don't free memory on timelist_print_stats(). Instead create a free function for that
- Fix memory leak on bundle-add (#575)
- Improve function names
If the timer on the top of the tail was completed grabtime stop was stopping
all timers on the tail instead of closing just the latest open timer.
For example this code:
timelist times;
times = init_timelist();
grabtime_start(×, "1");
grabtime_start(×, "2");
grabtime_start(×, "3");
grabtime_start(×, "4");
grabtime_start(×, "5");
sleep(1);
grabtime_stop(×);
sleep(1);
grabtime_stop(×);
sleep(1);
grabtime_stop(×);
sleep(1);
grabtime_stop(×);
sleep(1);
grabtime_stop(×);
Would produce this output:
Raw elapsed time stats:
2000.30 ms: 1
2000.30 ms: 2
2000.18 ms: 3
2000.18 ms: 4
1000.10 ms: 5
CPU process time stats:
0.20 ms: 1
0.19 ms: 2
0.07 ms: 3
0.07 ms: 4
0.05 ms: 5
Not it's printing:
Raw elapsed time stats:
5000.48 ms: 1
4000.41 ms: 2
3000.34 ms: 3
2000.27 ms: 4
1000.15 ms: 5
CPU process time stats:
0.15 ms: 1
0.13 ms: 2
0.11 ms: 3
0.09 ms: 4
0.06 ms: 5
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
As part of the effort of having the functional tests better
organized and have traceability we are adding unique IDs to
every test.
This commit adds the IDs to the bundle-add tests. It also
changes the description of some of them to make them clearer,
and removes duplicates.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Some functionality was added to the test library to allow printing
function availability plus usage information.
This commit adds that info to the readme of the library to keep it
accurate. It also adds a table of groups for the tests which will
be useful soon when we start using IDs in the tests.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
When you do a "verify --fix --picky -m older_version", and one
or more of the currently installed bundles didn't exist back then,
a non useful error message was being used, and the verify operation
would fail.
This commit makes the following changes.
1) With this commit, if the mentioned situation happens, the verify
operation will still be stopped, but a useful message will now be
displayed to inform the user of the situation, and he/she will be
presented with an alternative to proceed using the --force option.
2) If the user uses the --force option, the user will still be warned
but the verify operation will continue and the offending bundles will
be removed from the system.
Closes#608
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Only files that were orphaned were being counted as files being removed
from the system, files removed because of the picky options were not being
counted. This commit changes that so files removed by picky are also
counted.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Various functions, like strtol, were used to convert strings to numbers.
Frequently, the results of these conversion functions were stored in
variables with types that did not match the function return value. As a
result, there was a potential risk that an overflow would occur when
type casting the string conversion function result to store it in a
mismatched type.
The most common case is to convert a string to an int, so this commit
creates the strtoi_err function which converts a string to an int and
provides error handling. Also, the error checking for other string to
number conversions was improved by adding error handling with errno.
Fixes#601
Signed-off-by: John Akre <john.w.akre@intel.com>
When mixing variables and targets make was attributing some variables as
targets. Because of that make install was running some tests defined in TEST
variable. Reordering all variable definitions to make sure all are defined
before first target definition.
Also removing line:
- test/functional/completion/completion-basic.bats: swupd.bash
because swupd.bash isn't autogenerated anymore, so it will always be ready
for the test.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Previously, the only way to get a return code of 0 (success) during
a bundle-add operation was if everything that was attempted to be
added had been successful. That means that bundle-add command was
returning EBUNDLE_INSTALL whenever it would try to add a bundle that
was already installed.
This commit changes the return code of such operation since it was
determined that it is a more appropriate behavior to consider an
attempt to add a bundle that is already added as successful, even when
no bundle was added during the operation.
Closes#510
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
There were two web server implementations in the functional tests and the
test library's slow server implementation was not functional. These issues
were addressed by the following changes:
- Consolidate test web server implementations into test library
- Add partial download support to start_web_server test library function
- Fix test library slow server functionality.
Signed-off-by: John Akre <john.w.akre@intel.com>
Print the compile-time configuration systemdsystemunitdir.
Option was incorrectly removed on 74b2d526 so it didn't get into commit
that added extra information to --version (204e2a4b)
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
This commit adds a few improvements to the test template that aim to
make easier to track tests.
As we are trying to organize the swupd tests better, it is useful to
have an easy way to identify who the original author of the test was
in case there are questions regarding the purpose of the test.
It is also useful sometimes to add a long description to a complex
test, so people reading the test understand what the test is attempting
to verify, and why is useful or different.
Lastly, it is a good practice to add a unique ID to every test case,
this makes it easier to track it, and to refer to it.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
I see the checkupdate/chk-update-slow-server test fail when the
http_proxy env variable is set, but no_proxy is not set.
Resolve the issue by adding "localhost" to no_proxy if needed, since the
test web servers run on localhost.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
Some time ago the "-u" option of the create_test_environment and
create_version functions was renamed to "-r". Four of the verify
tests were not updated, so they were crashing during the setup,
while trying to create the test environment, so the test would not
be run since the setup failed but the teardown would still run and
the teardown would attempt to delete a non existent test environment
which would cause the destroy_test_environment to exit the script
causing an inconclusive test result.
This commit fixes the issue by doing the following actions:
- Fixes the tests by using the correct option "-r".
- Modifies the destroy_test_environment function so it does not exit
if a test environment doesn't exist, but instead it just returns a non
zero code and warns the user so the teardown works as expected.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
When performing an update, if one or more files fail to be downloaded
the update process continues and the user is not notified of any
failure in the update.
This commit forces the update to abort if one or more files could not
be downloaded and informs the user about the failed update.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
When doing an update if an update is not successful it does not
show a message saying the update was successful but it does show
other messages that could make you believe the update was successful
even when it was not.
This commit changes the logic so certain messages are only shown if
the update was successful and so an explicit failure message is
displayed in the case the update failed.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
The function load_mom was returning the requested MoM if found or
NULL if not found.
This commit removes the load_mom_err function and adds the capability
of returning the error code to the load_mom function.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Linux programs return code should be a number between 0 and 255, so 404 is an
invalid return code. Removing it from docs and from swupd-error.h file.
As it wasn't being used, this won't be a problem.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
This commit adds a menu of the functions that are available for
users when writing tests or just using the library to create
resources to test their code.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Delta manifests are no longer used, so removing support for them. This
change removes the try_delta_manifest_download function which was used
to download manifest deltas. After removing this function, the 'current'
and 'file' parameters were no longer used by the retrieve_manifests
function. This had a ripple effect that removed unused parameters from
a variety of other functions.
Signed-off-by: John Akre <john.w.akre@intel.com>
Fix a bug in swupd autoupdate --enabled. If the swupd autoupdate time unit
was already loaded with the status of 'active', the unit needs to be restarted
and not just started again.
Problem reported and fixed by Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Fix bug in v3.18.0. Autoupdate was disabled on systems because of an option
removed from configure.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>