[Toaster] Usage of already cloned layers in toaster

sujith h sujith.h at gmail.com
Tue Aug 4 06:16:27 PDT 2015


On Tue, Aug 4, 2015 at 4:05 PM, sujith h <sujith.h at gmail.com> wrote:

>
>
> 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')
> ------------
>
>
Modified code bit further:
 response = client.post(reverse('xhr_importlayer'),
                   data, content_type="application/json"


Also resulted in the same error.


> 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
>



-- 
സുജിത് ഹരിദാസന്
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/0b2cc2b4/attachment-0001.html>


More information about the toaster mailing list