[OE-core] [PATCH v2 2/2] oeqa/selftest: new tests for devtool upgrage feature

Leonardo Sandoval leonardo.sandoval.gonzalez at linux.intel.com
Wed Aug 26 16:29:37 UTC 2015



On 08/26/2015 11:15 AM, Aníbal Limón wrote:
> Comments below.
>
> On 26/08/15 02:43, leonardo.sandoval.gonzalez at linux.intel.com wrote:
>> From: Leonardo Sandoval <leonardo.sandoval.gonzalez at linux.intel.com>
>>
>> Basic tests for the devtool's upgrade feature, including:
>>        * Parameter check
>>        * Upgrading a real recipe (e2fsprogrs) without patching and
>>            checing its output
>>        * Devtool status after upgrade
>>
>> Signed-off-by: Leonardo Sandoval
>> <leonardo.sandoval.gonzalez at linux.intel.com>
>> ---
>>   meta/lib/oeqa/selftest/devtool.py | 36
>> ++++++++++++++++++++++++++++++++++++
>>   1 file changed, 36 insertions(+)
>>
>> diff --git a/meta/lib/oeqa/selftest/devtool.py
>> b/meta/lib/oeqa/selftest/devtool.py
>> index b59db15..f72e010 100644
>> --- a/meta/lib/oeqa/selftest/devtool.py
>> +++ b/meta/lib/oeqa/selftest/devtool.py
>> @@ -857,3 +857,39 @@ class DevtoolTests(DevtoolBase):
>>               result = runCmd('devtool undeploy-target -c %s root@%s'
>> % (testrecipe, qemu.ip))
>>               result = runCmd('ssh %s root@%s %s' % (sshargs, qemu.ip,
>> testcommand), ignore_status=True)
>>               self.assertNotEqual(result, 0, 'undeploy-target did not
>> remove command as it should have')
>> +
>> +    def test_devtool_upgrade(self):
>> +        # Check preconditions
>> +        workspacedir = os.path.join(self.builddir, 'workspace')
>> +        self.assertTrue(not os.path.exists(workspacedir), 'This test
>> cannot be run with a workspace directory under the build directory')
>> +        # Check parameters
>> +        result = runCmd('devtool upgrade -h')
>> +        for param in 'recipename srctree --version -V --branch -b
>> --keep-temp --no-patch'.split():
>> +            self.assertIn(param, result.output)
>> +        # For the moment, we are using a real recipe.
>> +        recipe='e2fsprogs'
>> +        version='1.42.13'
>
> Isn't a guarantee that this version will be newer ever (i.e. if someone
> upgrade e2fsprogs to 1.42.13) what happen in this case?

Good question. In fact, the code will fail just in case current and 
upgrade version are the same. The tool can also do downgrades, so at the 
end it does not matter what the version is. I will correct this point 
and send a v3.

As mentioned by Paul in a previous message, we need 'upgradable' recipes 
which whenever the test is done, it can be upgrade. The only point here 
is that we need a tarball somewhere, so the URL is always live. Not sure 
if poky repository is a good place for the latter, any suggestion?


>> +        tempdir = tempfile.mkdtemp(prefix='devtoolqa')
>> +        # Check that recipe is not already under devtool control
>> +        result = runCmd('devtool status')
>> +        self.assertNotIn(recipe, result.output)
>> +        # Check upgrade. Code does not check if new PV is older or
>> newer that current PV, so, it may be that
>> +        # we are downgrading instead of upgrading.
>> +        result = runCmd('devtool upgrade %s %s -V %s --no-patch' %
>> (recipe, tempdir, version))
>> +        # Check if srctree at least is populated
>> +        self.assertTrue(len(os.listdir(tempdir)) > 0, 'scrtree (%s)
>> should be populated with new (%s) source code' % (tempdir, version))
>> +        # Check new recipe folder is present
>> +
>> self.assertTrue(os.path.exists(os.path.join(workspacedir,'recipes',recipe)),
>> 'Recipe folder should exist')
>> +        # Check new recipe file is present
>> +
>> self.assertTrue(os.path.exists(os.path.join(workspacedir,'recipes',recipe,"%s_%s.bb"
>> % (recipe,version))), 'Recipe folder should exist')
>> +        # Check devtool status and make sure recipe is present
>> +        result = runCmd('devtool status')
>> +        self.assertIn(recipe, result.output)
>> +        self.assertIn(tempdir, result.output)
>> +        # Check devtool reset recipe
>> +        result = runCmd('devtool reset %s -n' % recipe)
>> +        result = runCmd('devtool status')
>> +        self.assertNotIn(recipe, result.output)
>> +        self.track_for_cleanup(tempdir)
>> +        self.track_for_cleanup(workspacedir)
>> +        self.add_command_to_tearDown('bitbake-layers remove-layer
>> */workspace')
>



More information about the Openembedded-core mailing list