public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [PATCH 1/2] oeqa/sdkext: Adds test cases for devtool extensible SDK
@ 2016-08-17 22:30 Francisco Pedraza
  2016-08-17 22:31 ` [PATCH 2/2] oeqa/selftest Adds eSDK test cases to devtool verification Francisco Pedraza
  0 siblings, 1 reply; 4+ messages in thread
From: Francisco Pedraza @ 2016-08-17 22:30 UTC (permalink / raw)
  To: openembedded-core; +Cc: Francisco Pedraza

Adds test cases in order to increase devtool verification.
The changes cover add, reset, build make, build cmake,
extend autotools recipe creation, kernel module and node.js.

Signed-off-by: Francisco Pedraza <francisco.j.pedraza.gonzalez@intel.com>
---
 meta/lib/oeqa/sdkext/devtool.py                    | 90 ++++++++++++++++++++--
 .../oeqa/sdkext/files/myapp_cmake/CMakeLists.txt   | 11 +++
 meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c     |  9 +++
 3 files changed, 103 insertions(+), 7 deletions(-)
 create mode 100644 meta/lib/oeqa/sdkext/files/myapp_cmake/CMakeLists.txt
 create mode 100644 meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c

diff --git a/meta/lib/oeqa/sdkext/devtool.py b/meta/lib/oeqa/sdkext/devtool.py
index c5bb310..5d955eb 100644
--- a/meta/lib/oeqa/sdkext/devtool.py
+++ b/meta/lib/oeqa/sdkext/devtool.py
@@ -1,32 +1,108 @@
 import shutil
-
+import subprocess
+import urllib.request
 from oeqa.oetest import oeSDKExtTest
 from oeqa.utils.decorators import *
 
 class DevtoolTest(oeSDKExtTest):
-
     @classmethod
     def setUpClass(self):
         self.myapp_src = os.path.join(self.tc.sdkextfilesdir, "myapp")
         self.myapp_dst = os.path.join(self.tc.sdktestdir, "myapp")
         shutil.copytree(self.myapp_src, self.myapp_dst)
 
+        self.myapp_cmake_src = os.path.join(self.tc.sdkextfilesdir, "myapp_cmake")
+        self.myapp_cmake_dst = os.path.join(self.tc.sdktestdir, "myapp_cmake")
+        shutil.copytree(self.myapp_cmake_src, self.myapp_cmake_dst)
+
+    def _test_devtool_build(self, directory):
+        self._run('devtool add myapp %s' % directory)
+        try:
+            self._run('devtool build myapp')
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset myapp')
+            raise e
+        self._run('devtool reset myapp')
+
+    def _test_devtool_build_package(self, directory):
+        self._run('devtool add myapp %s' % directory)
+        try:
+            self._run('devtool package myapp')
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset myapp')
+            raise e
+        self._run('devtool reset myapp')
+
     def test_devtool_location(self):
         output = self._run('which devtool')
         self.assertEqual(output.startswith(self.tc.sdktestdir), True, \
             msg="Seems that devtool isn't the eSDK one: %s" % output)
-
+    
     @skipUnlessPassed('test_devtool_location')
     def test_devtool_add_reset(self):
         self._run('devtool add myapp %s' % self.myapp_dst)
         self._run('devtool reset myapp')
+    
+    @testcase(1473)
+    @skipUnlessPassed('test_devtool_location')
+    def test_devtool_build_make(self):
+        self._test_devtool_build(self.myapp_dst)
+    
+    @testcase(1474)
+    @skipUnlessPassed('test_devtool_location')
+    def test_devtool_build_esdk_package(self):
+        self._test_devtool_build_package(self.myapp_dst)
 
+    @testcase(1479)
     @skipUnlessPassed('test_devtool_location')
-    def test_devtool_build(self):
-        self._run('devtool add myapp %s' % self.myapp_dst)
-        self._run('devtool build myapp')
-        self._run('devtool reset myapp')
+    def test_devtool_build_cmake(self):
+        self._test_devtool_build(self.myapp_cmake_dst)
+    
+    @testcase(1482)
+    @skipUnlessPassed('test_devtool_location')
+    def test_extend_autotools_recipe_creation(self):
+        req = 'https://github.com/rdfa/librdfa'
+        recipe = "bbexample"
+        self._run('devtool add %s %s' % (recipe, req) )
+        try:
+            self._run('devtool build %s' % recipe)
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset %s' % recipe)
+            raise e
+        self._run('devtool reset %s' % recipe)
+
+    @testcase(1484)
+    @skipUnlessPassed('test_devtool_location')
+    def test_devtool_kernelmodule(self):
+        docfile = 'git://github.com/Mange/rtl8192eu-linux-driver.git'
+        recipe = 'rtl-linux-driver'
+        self._run('devtool add %s %s' % (recipe, docfile) )
+        try:
+            self._run('devtool build %s' % recipe)
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset %s' % recipe)
+            raise e
+        self._run('devtool reset %s' % recipe)
+
+    @testcase(1478)
+    @skipUnlessPassed('test_devtool_location')
+    def test_recipes_for_nodejs(self):
+        package_nodejs = "npm://registry.npmjs.org;name=forever;version=0.15.1"
+        self._run('devtool add %s ' % package_nodejs)
+        try:
+            self._run('devtool build %s ' % package_nodejs)
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset %s' % package_nodejs)
+            raise e
+        self._run('devtool reset %s '% package_nodejs)
+
 
     @classmethod
     def tearDownClass(self):
         shutil.rmtree(self.myapp_dst)
+        shutil.rmtree(self.myapp_cmake_dst)
diff --git a/meta/lib/oeqa/sdkext/files/myapp_cmake/CMakeLists.txt b/meta/lib/oeqa/sdkext/files/myapp_cmake/CMakeLists.txt
new file mode 100644
index 0000000..19d773d
--- /dev/null
+++ b/meta/lib/oeqa/sdkext/files/myapp_cmake/CMakeLists.txt
@@ -0,0 +1,11 @@
+cmake_minimum_required (VERSION 2.6)
+project (myapp)
+# The version number.
+set (myapp_VERSION_MAJOR 1)
+set (myapp_VERSION_MINOR 0)
+
+# add the executable
+add_executable (myapp myapp.c)
+
+install(TARGETS myapp
+        RUNTIME DESTINATION bin)
diff --git a/meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c b/meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c
new file mode 100644
index 0000000..f0b63f0
--- /dev/null
+++ b/meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int
+main(int argc, char *argv[])
+{
+	printf("Hello world\n");
+
+	return 0;
+}
-- 
2.5.0



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] oeqa/selftest Adds eSDK test cases to devtool verification.
  2016-08-17 22:30 [PATCH 1/2] oeqa/sdkext: Adds test cases for devtool extensible SDK Francisco Pedraza
@ 2016-08-17 22:31 ` Francisco Pedraza
  2016-08-19 22:13   ` Richard Purdie
  0 siblings, 1 reply; 4+ messages in thread
From: Francisco Pedraza @ 2016-08-17 22:31 UTC (permalink / raw)
  To: openembedded-core; +Cc: Francisco Pedraza

The covered functions are, install libraries headers, image generation binary feeds and
sdk update devtool.

Signed-off-by: Francisco Pedraza <francisco.j.pedraza.gonzalez@intel.com>
---
 meta/lib/oeqa/selftest/eSDK.py | 147 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 147 insertions(+)
 create mode 100644 meta/lib/oeqa/selftest/eSDK.py

diff --git a/meta/lib/oeqa/selftest/eSDK.py b/meta/lib/oeqa/selftest/eSDK.py
new file mode 100644
index 0000000..76fe660
--- /dev/null
+++ b/meta/lib/oeqa/selftest/eSDK.py
@@ -0,0 +1,147 @@
+import unittest
+import tempfile
+import shutil
+import os
+import glob
+import logging
+import subprocess
+import oeqa.utils.ftools as ftools
+from oeqa.utils.decorators import testcase 
+from oeqa.selftest.base import oeSelfTest
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var
+from oeqa.utils.httpserver import HTTPService
+
+class oeSDKExtSelfTest(oeSelfTest):
+    """
+    # Bugzilla Test Plan: 6033
+    # This code is planned to be part of the automation for eSDK containig
+    # Install libraries and headers, image generation binary feeds, Node.js Installation, Node.js test recipes 
+    # and sdk update devtool.
+    """
+
+    @staticmethod
+    def get_esdk_environment(env_eSDK, tmpdir_eSDKQA):
+        # XXX: at this time use the first env need to investigate
+        # what environment load oe-selftest, i586, x86_64
+        pattern = os.path.join(tmpdir_eSDKQA, 'environment-setup-*')
+        return glob.glob(pattern)[0]
+    
+    @staticmethod
+    def run_esdk_cmd(env_eSDK, tmpdir_eSDKQA, cmd, postconfig=None, **options):
+        if postconfig:
+            esdk_conf_file = os.path.join(tmpdir_eSDKQA, 'conf', 'local.conf')
+            with open(esdk_conf_file, 'a+') as f:
+                f.write(postconfig)
+        if not options:
+            options = {}
+        if not 'shell' in options:
+            options['shell'] = True
+
+        runCmd("cd %s; . %s; %s" % (tmpdir_eSDKQA, env_eSDK, cmd), **options)
+
+    @staticmethod
+    def generate_eSDK(image):
+        pn_task = '%s -c populate_sdk_ext' % image
+        bitbake(pn_task)
+
+    @staticmethod
+    def get_eSDK_toolchain(image):
+        pn_task = '%s -c populate_sdk_ext' % image
+
+        sdk_deploy = get_bb_var('SDK_DEPLOY', pn_task)
+        toolchain_name = get_bb_var('TOOLCHAINEXT_OUTPUTNAME', pn_task)
+        return os.path.join(sdk_deploy, toolchain_name + '.sh')
+    
+
+    @classmethod
+    def setUpClass(cls):
+        # Start to serve sstate dir
+        sstate_dir = os.path.join(os.environ['BUILDDIR'], 'sstate-cache')
+        cls.http_service = HTTPService(sstate_dir)
+        cls.http_service.start()
+
+        http_url = "127.0.0.1:%d" % cls.http_service.port
+ 
+        image = 'core-image-minimal'
+
+        cls.tmpdir_eSDKQA = tempfile.mkdtemp(prefix='eSDKQA')
+        oeSDKExtSelfTest.generate_eSDK(image)
+
+        # Install eSDK
+        ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(image)
+        runCmd("%s -y -d \"%s\"" % (ext_sdk_path, cls.tmpdir_eSDKQA))
+
+        cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
+
+        # Configure eSDK to use sstate mirror from poky
+        sstate_config="""
+SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
+SSTATE_MIRRORS =  "file://.* http://%s/PATH"
+        """ % http_url
+        with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
+            f.write(sstate_config)
+
+        # Common variables
+        cls.package_nodejs = "npm://registry.npmjs.org;name=forever;version=0.15.1"
+      
+    @classmethod
+    def tearDownClass(cls):
+        shutil.rmtree(cls.tmpdir_eSDKQA)
+        cls.http_service.stop()
+
+    @testcase (1471)
+    def test_install_libraries_headers(self):
+        pn_sstate = 'bc'
+        bitbake(pn_sstate)
+        cmd = "devtool sdk-install %s " % pn_sstate
+        oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)
+    
+    @testcase(1472)
+    def test_image_generation_binary_feeds(self):
+        image = 'core-image-minimal'
+        cmd = "devtool build-image %s" % image
+        oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)
+
+
+    @testcase(1487)
+    def test_sdkupdate_devtool(self):
+        image = 'core-image-sato'
+
+        tmpdir_publish_eSDK = tempfile.mkdtemp(prefix='publish_eSDK')
+
+        http_service = HTTPService(tmpdir_publish_eSDK)
+        http_service.start()
+        http_url = "http://127.0.0.1:%d" % http_service.port
+
+        sstate_config = """
+SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
+SSTATE_MIRRORS =  "file://.* http://%s/PATH"
+EXAMPLE_VAR = "qemux86"        
+        """ %http_url
+        
+        with open (os.path.join(self.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
+            f.write(sstate_config)
+
+        try:
+            oeSDKExtSelfTest.generate_eSDK(image)
+            ext_sdk_path_sato = oeSDKExtSelfTest.get_eSDK_toolchain(image)
+          
+            cmd = "oe-publish-sdk %s %s" % (ext_sdk_path_sato, tmpdir_publish_eSDK)
+            subprocess.check_output(cmd, shell=True)
+
+            cmd = 'devtool sdk-update %s' % http_url
+            oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, tmpdir_publish_eSDK, cmd)
+            with open(os.path.join(self.tmpdir_eSDKQA, 'conf', 'local.conf')) as f:
+                for line in f:
+                    if line.strip() == 'EXAMPLE_VAR = "qemux86"':
+                        break
+                else:
+                    self.fail("Test configuration missing.")
+
+        finally:
+            http_service.stop()
+            shutil.rmtree(tmpdir_publish_eSDK)
+            self.remove_config(sstate_config)
+
+if __name__ == '__main__':
+    unittest.main()
-- 
2.5.0



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] oeqa/selftest Adds eSDK test cases to devtool verification.
  2016-08-17 22:31 ` [PATCH 2/2] oeqa/selftest Adds eSDK test cases to devtool verification Francisco Pedraza
@ 2016-08-19 22:13   ` Richard Purdie
  2016-08-19 22:49     ` Richard Purdie
  0 siblings, 1 reply; 4+ messages in thread
From: Richard Purdie @ 2016-08-19 22:13 UTC (permalink / raw)
  To: Francisco Pedraza, openembedded-core

On Wed, 2016-08-17 at 17:31 -0500, Francisco Pedraza wrote:
> The covered functions are, install libraries headers, image
> generation binary feeds and
> sdk update devtool.
> 
> Signed-off-by: Francisco Pedraza <
> francisco.j.pedraza.gonzalez@intel.com>
> ---
>  meta/lib/oeqa/selftest/eSDK.py | 147
> +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 147 insertions(+)
>  create mode 100644 meta/lib/oeqa/selftest/eSDK.py

I do love the idea of this and having more tests but the kernel module
ESDK test fails on ppc and mips:

https://autobuilder.yoctoproject.org/main/builders/nightly-ppc/builds/911/steps/Running%20ESDK%20Sanity%20Tests/logs/stdio

https://autobuilder.yoctoproject.org/main/builders/nightly-mips/builds/898

Cheers,

Richard


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] oeqa/selftest Adds eSDK test cases to devtool verification.
  2016-08-19 22:13   ` Richard Purdie
@ 2016-08-19 22:49     ` Richard Purdie
  0 siblings, 0 replies; 4+ messages in thread
From: Richard Purdie @ 2016-08-19 22:49 UTC (permalink / raw)
  To: Francisco Pedraza, openembedded-core

On Fri, 2016-08-19 at 23:13 +0100, Richard Purdie wrote:
> On Wed, 2016-08-17 at 17:31 -0500, Francisco Pedraza wrote:
> > The covered functions are, install libraries headers, image
> > generation binary feeds and
> > sdk update devtool.
> > 
> > Signed-off-by: Francisco Pedraza <
> > francisco.j.pedraza.gonzalez@intel.com>
> > ---
> >  meta/lib/oeqa/selftest/eSDK.py | 147
> > +++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 147 insertions(+)
> >  create mode 100644 meta/lib/oeqa/selftest/eSDK.py
> 
> I do love the idea of this and having more tests but the kernel
> module
> ESDK test fails on ppc and mips:
> 
> https://autobuilder.yoctoproject.org/main/builders/nightly-ppc/builds
> /911/steps/Running%20ESDK%20Sanity%20Tests/logs/stdio
> 
> https://autobuilder.yoctoproject.org/main/builders/nightly-mips/build
> s/898

and:

https://autobuilder.yoctoproject.org/main/builders/nightly-oe-selftest/builds/649/steps/Running%20oe-selftest/logs/stdio

(sorry!)

Cheers,

Richard



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-08-19 22:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-17 22:30 [PATCH 1/2] oeqa/sdkext: Adds test cases for devtool extensible SDK Francisco Pedraza
2016-08-17 22:31 ` [PATCH 2/2] oeqa/selftest Adds eSDK test cases to devtool verification Francisco Pedraza
2016-08-19 22:13   ` Richard Purdie
2016-08-19 22:49     ` Richard Purdie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox