<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><title>Re: [Openstack] [Nova] EC2 api testing</title><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cordia New";
        panose-1:2 11 3 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cordia New";
        panose-1:2 11 3 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:317468139;
        mso-list-template-ids:-1811920280;}
@list l1
        {mso-list-id:437717280;
        mso-list-template-ids:-1605859946;}
@list l2
        {mso-list-id:603542092;
        mso-list-template-ids:-87374974;}
@list l3
        {mso-list-id:1838300891;
        mso-list-template-ids:410292960;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I was really just thinking of “borrowing” the test framework around tempest, rather than push the tests back to tempest. I agree we don’t want to be too tied to OpenStack.  I certainly would like to have this running against CloudStack too.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I hoped we could look at doing testing from a user perspective. Maybe having tests like: test_instatance_s3_style_success, test_instance_s3_style_failure_bad_image, etc. Each can check the request, functional and scheme compliance.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Could the documentation start a the list of passed and failed tests? Possibly the failure should either be “non-compliant” or “not implemented”. Maybe “non-compliant” could specify which versions it is not compliant with.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Cheers,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>John<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Joshua Harlow [mailto:harlowja@yahoo-inc.com] <br><b>Sent:</b> 08 May 2012 18:49<br><b>To:</b> John Garbutt; Doug Hellmann; Martin Packman; Joe Gordon; jaypipes@gmail.com<br><b>Cc:</b> openstack<br><b>Subject:</b> Re: [Openstack] [Nova] EC2 api testing<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>So the tempest approach I think starts to pull this EC2 validation suite into openstack to much. A goal that I think is useful is to have this not that tightly integrated with openstack, so that say cloudstack, and others can use this type of suite as well. That way everyone benefits and everyone can contribute (not just the openstack pep’s). <br><br>I’d personally like to see the following kinds of validations/compliance checks:<br><br><b>Request compliance:</b></span><o:p></o:p></p><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Send in X request, expect Y response (or at least Z sub-fields of Y response) to match known “valid” response Y2</span><o:p></o:p></li></ol><ol start=1 type=1><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>This means we have a need for a whole bunch of requests, a whole bunch of “valid” responses and a way to determine differences (xmlunit in java provides some of this, I don’t know of anything in python). I have created something like this (a framework) that was used for the yahoo->bing ad provider xml transtiion project stuff here, that we might be able to use.</span><o:p></o:p></li></ol></ol><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Schema compliance:</span></b><o:p></o:p></p><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo2'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Something along the lines of validating XSDs? Amazon has about 10 versions of there api’s, which ones are u complaint with (or that kind of question is to be answered here).</span><o:p></o:p></li></ol><ol start=1 type=1><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level2 lfo2'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Questions as to how strict and such need to be tackled here (all the python XSD validators seem to blow up on the first error, not so useful when trying to see multiple errors) </span><o:p></o:p></li><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level2 lfo2'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><a href="https://github.com/yahoo/Openstack-EC2/tree/master/data/xsds">https://github.com/yahoo/Openstack-EC2/tree/master/data/xsds</a></span><o:p></o:p></li></ol></ol><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Functional compliance:</span></b><o:p></o:p></p><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>This is where we start to say use boto (which itself uses a very tolerant SAX parser to create python objects) and test anything the above 2 types of tests could not accomplish (say u need a if statement to check some conditions, the above 2 ways probably won’t get that). Euca2ools runs on boto, so I would consider that the same case, but using a library might not be the best approach because then u start to run into the issue of the library is not compliant either (ie testing the library instead of the apis).</span><o:p></o:p></li></ol><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Documentation compliance:</span></b><o:p></o:p></p><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo4'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>This is I guess where we or others document how compliant a suite “target” is and what the known issues with it are.</span><o:p></o:p></li></ol><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><br>That was my thoughts anyway :-)<br><br>- Josh<br><br>On 5/8/12 8:32 AM, "John Garbutt" <<a href="John.Garbutt@citrix.com">John.Garbutt@citrix.com</a>> wrote:</span><o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>I am certainly up for helping with this effort.<br> <br>I wondered about this approach:<br></span><span style='font-size:11.0pt;font-family:Symbol;color:#1F497D'>· </span><span style='font-size:11.0pt;color:#1F497D'>        </span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Starting with Tempest (mostly for its reporting, and configuration)<br><br></span><span style='font-size:11.0pt;font-family:Symbol;color:#1F497D'>· </span><span style='font-size:11.0pt;color:#1F497D'>        </span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Creating a new category “EC2_Compat” or something like that<br><br></span><span style='font-size:11.0pt;font-family:Symbol;color:#1F497D'>· </span><span style='font-size:11.0pt;color:#1F497D'>        </span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Trying to add in all the tests from those two repos into the new thing<br><br></span><span style='font-size:11.0pt;font-family:Symbol;color:#1F497D'>· </span><span style='font-size:11.0pt;color:#1F497D'>        </span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Looking at what the gaps are<br><br> <br>I am not sure it makes sense for these tests to leave in tempest, but it does seem silly to create our own set of configuration and test runner code, if we don’t have to. Seems too early to push this shared code into something like openstack-common-tests, but maybe that is what we need long term?<br> <br>A totally different approach, that sounds attractive, is testing with some of the tools people actually want to use: boto, eucatools. However, this does then mean you end up writing N times as many tests, and it means you have to somehow pick which tools you want to test. Maybe the tests are easier to write, so the fact there is more doesn’t matter. While those tests don’t really test if we comply with ec2, maybe they do test what people care about.<br> <br>Cheers,<br>John<br> <br><br></span><b><span style='font-size:10.0pt;font-family:"Calibri","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Calibri","sans-serif"'> <a href="openstack-bounces+john.garbutt=eu.citrix.com@lists.launchpad.net">openstack-bounces+john.garbutt=eu.citrix.com@lists.launchpad.net</a> [<a href="mailto:openstack-bounces+john.garbutt=eu.citrix.com@lists.launchpad.net">mailto:openstack-bounces+john.garbutt=eu.citrix.com@lists.launchpad.net</a>] <b>On Behalf Of </b>Joshua Harlow<br><b>Sent:</b> 07 May 2012 18:17<br><b>To:</b> Doug Hellmann; Martin Packman<br><b>Cc:</b> openstack<br><b>Subject:</b> Re: [Openstack] [Nova] EC2 api testing<br></span><br><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>TBD afaik.<br><br>I think it would be nice if we could have one tool  to rule them all, but I need to get my hands on this enstrsatus thingy to see what is there :-)<br><br>I’ve started documenting some EC2 stuff that I see @ <a href="https://github.com/yahoo/Openstack-EC2/issues">https://github.com/yahoo/Openstack-EC2/issues</a> <br><br>If others want to put stuff on there (or a better location, that’s cool with me).<br><br>On 5/4/12 3:04 PM, "Doug Hellmann" <<a href="doug.hellmann@dreamhost.com">doug.hellmann@dreamhost.com</a>> wrote:<br><br><br>On Fri, May 4, 2012 at 1:09 PM, Martin Packman <<a href="martin.packman@canonical.com">martin.packman@canonical.com</a>> wrote:<br>At the Folsom Design Summit we discussed[1] trying to collaborate on a<br>test suite for EC2 api support. Currently nova supports the common<br>stuff pretty well has differing behaviour in a lot of edge cases.<br>Having a separate suite, along the lines of tempest, that could be run<br>against other existing clouds as well as OpenStack would let us test<br>the tests as well, and would be useful for other projects.<br><br>Various parties have done work in this direction in the past, the<br>trick is going to be combining it into something we can all use. The<br>existing code I know about includes aws-compat[2], Openstack-EC2[3],<br>the tests in nova itself, some experimental code in awsome, and an<br>Enstratus test suite. I'm hoping to find out more about the Enstratus<br>code, James Urquhart suggested opening the remaining parts would be a<br>reasonable step. Is there anything else out there we should look at as<br>well?<br><br>Are there any strong opinions over the right way of getting started on this?<br><br>Are you going to try to get all of the code for those projects into one package, or build a meta-tool that downloads the others and uses them? I don't have an opinion one way or the other, I'm just curious.<br> <br>Doug<br><br>Martin<br><br><br>[1] Nova EC2 compatibility sesson etherpad<br><<a href="http://etherpad.openstack.org/FolsomEC2Compatibility">http://etherpad.openstack.org/FolsomEC2Compatibility</a>><br>[2] <<a href="https://github.com/cloudscaling/aws-compat">https://github.com/cloudscaling/aws-compat</a>><br>[3] <<a href="https://github.com/yahoo/Openstack-EC2">https://github.com/yahoo/Openstack-EC2</a>><br><br>_______________________________________________<br>Mailing list: <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>Post to     : <a href="openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br>Unsubscribe : <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>More help   : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a><br><br></span><o:p></o:p></p></div></div></body></html>