[openstack-qa] console output handling in tempest

Sean Dague sdague at linux.vnet.ibm.com
Fri Jan 25 10:55:07 UTC 2013


I'm actually sort of surprised that in a Linux env we are putting ^M on 
the wire on the console. I wonder where that comes from....

Out of curiosity is "Truncated console log returned" in the logs 
anywhere (n-cpu probably)?

It wouldn't hurt to track this one as a nova bug as well, and get it on 
-dev or into #openstack-nova to see what folks think about solutions there.

	-Sean

On 01/25/2013 01:21 AM, Christopher Yeoh wrote:
> Hi,
>
> I've been debugging an error that pops up in the tempest test errors occasionally:
>
> ======================================================================
> FAIL: tempest.tests.compute.servers.test_console_output.ConsoleOutputTestXML.test_get_console_output
> tags: worker-0
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>    File "/opt/stack/tempest/tempest/tests/compute/servers/test_console_output.py", line 60, in test_get_console_output
>      self.wait_for(get_output)
>    File "/opt/stack/tempest/tempest/tests/compute/base.py", line 230, in wait_for
>      condition()
>    File "/opt/stack/tempest/tempest/tests/compute/servers/test_console_output.py", line 58, in get_output
>      self.assertEqual(lines, 10)
> AssertionError: 12 != 10
>
> I had originally thought it was a parallel testing error, but it also turns up
> when the tests are run serially if the system is slow. The test attempts to get
> get the last 10 lines of console output. Depending on how long the instance takes
> to boot it can get different output. It fails when the output looks like this:
>
> ================START====================
>   WARN: /etc/rc3.d/S99-cloud-userdata failed^M
>    ____               ____  ____^M
>   / __/ __ ____ ____ / __ \/ __/^M
> / /__ / // __// __// /_/ /\ \ ^M
> \___//_//_/  /_/   \____/___/ ^M
>   http://launchpad.net/cirros^M
> ^M
> ^M^M
> login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.^M
> cirros login:
> ==================END================
>
> I've replicated the carriage returns (^M) manually so email programs don't eat
> them and make them invisible or convert them.
>
> The JSON version of the test passes, but the XML version fails because when lxml/etree
> is used to convert the output and it finds a ^M without a corresponding line feed it
> converts it into an addition LF. Thus there are 12 lines of console output rather than.
>
> The easy way to fix this is just to strip the ^M characters in the
> ConsoleOutputsClientXML tempest class. But I was wondering if there
> is a better way to fix this by getting lxml/etree to be a bit smarter?
>
> Also I'm wondering if the nova api should just be stripping ^M characters
> before sending the console output to the clients - it does strip some
> already
>
>          # XML output is not correctly escaped, so remove invalid characters
>          remove_re = re.compile('[\x00-\x08\x0B-\x0C\x0E-\x1F]')
>
> Thoughts anyone?
>
> Regards,
>
> Chris
>


-- 
Sean Dague
IBM Linux Technology Center
email: sdague at linux.vnet.ibm.com
alt-email: sldague at us.ibm.com




More information about the openstack-qa mailing list