[Toaster] Usage of already cloned layers in toaster

sujith h sujith.h at gmail.com
Tue Aug 4 03:35:43 PDT 2015


On Mon, Aug 3, 2015 at 3:56 PM, Michael Wood <michael.g.wood at intel.com>
wrote:

> On 31/07/15 14:06, sujith h wrote:
>
>>
>>
>> On Wed, Jul 29, 2015 at 8:09 PM, sujith h <sujith.h at gmail.com <mailto:
>> sujith.h at gmail.com>> wrote:
>>
>>
>>
>>     On Wed, Jul 29, 2015 at 12:21 AM, Michael Wood
>>     <michael.g.wood at intel.com <mailto:michael.g.wood at intel.com>> wrote:
>>
>>         On 27/07/15 16:23, sujith h wrote:
>>
>>
>>
>>             On Mon, Jul 27, 2015 at 6:55 PM, Michael Wood
>>             <michael.g.wood at intel.com
>>             <mailto:michael.g.wood at intel.com>
>>             <mailto:michael.g.wood at intel.com
>>
>>             <mailto:michael.g.wood at intel.com>>> wrote:
>>
>>                 On 27/07/15 11:31, sujith h wrote:
>>
>>
>>
>>                     On Mon, Jul 27, 2015 at 3:39 PM, Barros Pena, Belen
>>                     <belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>
>>                     <mailto:belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>>
>>                     <mailto:belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>
>>                     <mailto:belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>>>> wrote:
>>
>>
>>
>>                         On 27/07/2015 07:54, "sujith h"
>>             <sujith.h at gmail.com <mailto:sujith.h at gmail.com>
>>                     <mailto:sujith.h at gmail.com
>>             <mailto:sujith.h at gmail.com>>
>>                         <mailto:sujith.h at gmail.com
>>             <mailto:sujith.h at gmail.com> <mailto:sujith.h at gmail.com
>>             <mailto:sujith.h at gmail.com>>>>
>>                     wrote:
>>
>>                         >
>>                         >
>>                         >On Fri, Jul 24, 2015 at 6:36 PM, Barros Pena,
>>             Belen
>>                         ><belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>
>>                     <mailto:belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>>
>>                         <mailto:belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>
>>                     <mailto:belen.barros.pena at intel.com
>>             <mailto:belen.barros.pena at intel.com>>>> wrote:
>>                         >
>>                         >
>>                         >
>>                         >On 24/07/2015 13:57, "sujith h"
>>             <sujith.h at gmail.com <mailto:sujith.h at gmail.com>
>>                     <mailto:sujith.h at gmail.com
>>             <mailto:sujith.h at gmail.com>>
>>                         <mailto:sujith.h at gmail.com
>>             <mailto:sujith.h at gmail.com> <mailto:sujith.h at gmail.com
>>             <mailto:sujith.h at gmail.com>>>>
>>
>>                     wrote:
>>                         >
>>                         >
>>                         >* Which version of Yocto Project you are
>>             using (fido or
>>                     master)?
>>                         >
>>                         >I am using fido branch.
>>                         >
>>                         >
>>                         >* Which release you have selected for your
>>             project?
>>                         >
>>                         >
>>                         >In the release I have selected "Local Yocto
>>             Project"
>>                         >
>>                         >
>>                         >* If you click the "view all compatible
>>             layers" link and
>>                     in that
>>                         page you
>>                         >search for meta-oe, do you get any results?
>>                         >
>>                         >I can see only "meta-yocto-bsp", "meta-yocto" and
>>                         "openembedded-core".
>>                         >Attached screenshot of the same.
>>                         >
>>                         >
>>                         >Also attaching screenshot of page where I try
>>             to import
>>                     meta-oe
>>                         from my
>>                         >locally cloned location.
>>                         >
>>                         >
>>                         >Below is the file structure I have:
>>                         >
>>             >sujith at kdekid:~/MEL/homework$ pwd
>>             >/home/sujith/MEL/homework
>>             >sujith at kdekid:~/MEL/homework$ ls -l
>>                         >total 5180
>>                         >drwxrwxr-x 19 sujith sujith    4096 Jun 12 18:40
>>                     meta-oe-local
>>                         >drwxrwxr-x 19 sujith sujith    4096 Jul 24 18:04
>>                         meta-openembedded-local
>>                         >drwxrwxr-x  8 sujith sujith    4096 Jul 24 18:02
>>                     meta-qt5-local
>>                         >drwxrwxr-x 11 sujith sujith    4096 Jul 27
>>             12:07 poky
>>                         >drwxrwxr-x  2 sujith sujith    4096 Jul 27 12:08
>>                         toaster_build_artifacts
>>                         >-rw-r--r--  1 sujith sujith 5277696 Jul 27 12:19
>>                     toaster.sqlite
>>                         >drwxrwxr-x  6 sujith sujith    4096 Jul 24
>>             16:25 venv
>>             >sujith at kdekid:~/MEL/homework$
>>                         >
>>
>>                         Right, I've managed to reproduce this. Looking
>>             at the browser
>>                         console, it
>>                         might be a problem with the javascript doing
>>             the layer name
>>                         validation. If
>>                         you change the layer name to something
>>             completely random
>>                     that does not
>>                         exist in the Toaster database (something like
>>             meta-xyz),
>>                     can you
>>                         import
>>                         the layer?
>>
>>
>>                     Am bit new to the web world. So I gave a try with
>>             firebug to
>>                     debug which script ( Javascript or any ) call happens
>>                     when I click "Import  and add to project" button.
>>             Even after
>>                     changing meta-oe repo to meta-xyz as per suggestion,
>>                     the result remains same. But this is the output I
>>             see in the
>>                     firebug console:
>>                     |{"current_id": 5, "current_url":
>>                     "git://git.openembedded.org/meta-openembedded
>>             <http://git.openembedded.org/meta-openembedded>
>>                     <http://git.openembedded.org/meta-openembedded>
>>                     <http://git.openembedded.org/meta-openembedded>",
>>             "error":
>>             "hint-layer-exists-with-different-url"||}|
>>             hint-layer-exists-with-different-url
>>
>>                     Also attaching the screenshot of the same ( to get
>>             more clarity ).
>>
>>
>>                 Thanks for this, I noticed this wasn't working
>>             properly last week,
>>                 and rolled a couple of patches to fix these regressions.
>>
>>
>>
>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=michaelw/toaster/wip-nav-project-changes&id=0181c56dd608427c0a7bd986df75bf7a1189e064
>>
>>                 and
>>
>>
>>
>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=michaelw/toaster/wip-nav-project-changes&id=aa5b023f03f5465ea22318a1f21199ce434eb700
>>
>>                 I have a few other things to fix on this branch as I
>>             have been
>>                 fixing a number of things to allow me to test the new
>>             project
>>                 page, I'm intending to roll a separate branch for
>>             review on it.
>>
>>                 You've highlighted that we need a unit test which does
>>             a layer
>>                 import using the back end API calls, which although it
>>             wouldn't
>>                 have caught this error would be really good to have,
>>             if you're
>>                 interested in helping with that?
>>
>>
>>             It would be my pleasure to help :) I might need some
>>             assistance as I am learning Django. May be some hint like
>>             where to start with or so.
>>
>>
>>         This is the best place to start
>>         https://docs.djangoproject.com/en/1.6/topics/testing/overview/
>>
>>         In ./bitbake
>>         <https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/bitbake
>> >/lib
>>         <https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/bitbake/lib
>> >/toaster
>>         <
>> https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/bitbake/lib/toaster
>> >/toastergui
>>         <
>> https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/bitbake/lib/toaster/toastergui
>> >/tests.py
>>         <
>> https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/bitbake/lib/toaster/toastergui/tests.py
>> >
>>
>>         We can add something like
>>
>>         class ImportLayerTestCase(|ProvisionedLayersProjectTestCase|):
>>         ....
>>         ...
>>             def test_import_layer(self):
>>         client.post(reverse('xhr_importlayer',.....
>>
>>         ...
>>
>>         We can then use the JSON response from the client to help
>>         validate the data coming back as well as checking the import
>>         layer actually entered the database.
>>
>>         There are a few examples in the yocto error-report-web project
>>         too that might be useful to look at e.g.
>>
>> http://git.yoctoproject.org/cgit/cgit.cgi/error-report-web/tree/Post/test.py#n153
>>         <
>> http://git.yoctoproject.org/cgit/cgit.cgi/error-report-web/tree/Post/test.py#n153
>> >
>>
>>         You can run the test by doing running ./manage.py test toastergui
>>
>>
>>     Thank you Michael for such a detailed step to follow. I have
>>     started reading the docs from django mentioned in the link and the
>>     reference mentioned in the mail.
>>
>>
>> I wrote a small piece of code in bitbake/lib/toaster/toastergui/tests.py.
>> Below is the code ( since I have written a small code, I thought to share
>> here. Kindly let me know if there is any problem sharing small code in the
>> mailing list ):
>> ----------
>> from django.test import TestCase
>> from django.test.client import Client
>> from django.core.urlresolvers import reverse
>> import json
>>
>>
>> class ImportLayerTestCase(TestCase):
>>     def test_import_layers(self):
>>         client = Client()
>>         json_string = json.dumps({'name':'meta-oe',
>> 'vcs-url':'/home/sujith/MEL/homework/meta-xyz',
>> 'git_ref':'c12b9596afd236116b25ce26dbe0d793de9dc7ce',
>> 'dir_path':'/home/sujith/MEL/homework/meta-xyz/meta-oe',
>>                       'project_id':'1', 'layer_deps':'1'})
>>         response = client.post(reverse('xhr_importlayer'),
>>                    {'data':json_string},
>>                    'json',
>>                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
>> -------------
>>
>> Let me know if I am in the right track. After following your mail and bit
>> of google, helped me in writing this code. My query here is when I try to
>> print response, it prints an html as follows:
>>
> --8<--
>
> Yep that's a good start, we currently don't actually pass IN a JSON
> document for the import layers call, it's just a bunch of parameters in the
> POST request.
> So instead of
>
>         json_string = json.dumps({'name':'meta-oe',
>>
>
> you can do:
>
>         data = {'name':'meta-oe',
>
>
> and then:
>
>        response = client.post(reverse('xhr_importlayer', args(1,)),
>                    data,
>

> etc
>

I modified my code segment to:
------------
        data = {'name':'meta-oe',
                'vcs-url':'/home/sujith/MEL/homework/meta-xyz',
                'git_ref':'c12b9596afd236116b25ce26dbe0d793de9dc7ce',
                'dir_path':'/home/sujith/MEL/homework/meta-xyz/meta-oe',
                'project_id':'1', 'layer_deps':'1'}
        response = client.post(reverse('xhr_importlayer'),
                   data, 'json',
                   HTTP_X_REQUESTED_WITH='XMLHttpRequest')
------------

After making this change when I try to run ./manage.py test toastergui, I
get an error saying:

--------------
(venv)sujith at kdekidd0:~/MEL/toaster_work/poky/bitbake/lib/toaster$
./manage.py test toastergui
Creating test database for alias 'default'...
Content-Type: application/json

{
  "error": "Missing parameters; requires vcs_url, name, git_ref and
project_id"
}
.
----------------------------------------------------------------------
Ran 1 test in 0.184s

OK
Destroying test database for alias 'default'...
(venv)sujith at kdekidd0:~/MEL/toaster_work/poky/bitbake/lib/toaster$
--------------

Bit confusing for me. From the views.py I can see that there is a
conditional check that is made for vcs_url, git_ref, project_id and name.
Which we are already providing in the dictionary, data.


>
> Looking at that response I'm wondering if you are you using current master
> branch? It seems to be showing the old response to that request where you
> haven't enabled build mode (which is enabled by default in current master).
> The response should be a JSON response where you have the returned state in
> it e.g. { "error" : "hint-layer-exists" } We can then parse this and test
> the various conditions are correct based on the data we sent it.
>

Just now moved to master branch. I was in the fido branch when I did my
initial testing.

>
> Thanks,
>
> Michael
>
>
>
>
>
>
>


-- 
സുജിത് ഹരിദാസന്
Bangalore
<Project>Contributor to KDE project
http://fci.wikia.com/wiki/Anti-DRM-Campaign
<Blog> http://sujithh.info
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20150804/74b3015a/attachment-0001.html>


More information about the toaster mailing list