Hi Neil,
 
From: Neil Williams [mailto:neil.williams@linaro.org]
Sent: Thursday, June 21, 2018 12:18 AM
To: Edmund Szeto <Edmund.Szeto@cypress.com>
Cc: Lava Users Mailman list <lava-users@lists.linaro.org>
Subject: Re: [Lava-users] Running unit tests
 
On Thu, 21 Jun 2018 at 07:45, Edmund Szeto <Edmund.Szeto@cypress.com> wrote:
Hi All,
I am having a bit of problem running the lava_scheduler_app unit tests as per the instructions at https://validation.linaro.org/static/docs/v2/dispatcher-testing.html.
 
​That one section needs updating - ./ci-run no longer takes a test name argument.​
 
​Use:
 
$ ./lava_server/manage.py test -v2 lava_scheduler_app.tests.test_device.DeviceTypeTest.test_unknown_invalid_template
 
This unit test, test_device,py, uses Database objects, so needs to run with manage.py
 
Other template unit tests (the ones including template in the filename like test_uboot_templates.py) can be run without needing a database to be created:
 
$ python3 -m unittest -vcf lava_scheduler_app.tests.test_uboot_templates..TestUbootTemplates.test_panda_template
 
To run all of the lava-server unit tests, use:
 
$ ./ci-run -s
 
To run all of the lava-dispatcher unit tests, use:
 
$ ./ci-run -d
 
​To run all the template tests which don't need a database to be created:
 
$ ./ci-run -t
 
 
I tried those commands (without the sudo) and I still got the same " TypeError: unhashable type: …" exceptions.
 
I keep getting errors such as the following:
$ sudo ./ci-run
​​lava_scheduler_app.tests.test_device.TestTemplates.test_x86_template
 
​*Don't use sudo​* - the documentation does not use sudo.
 
This will *really* mess with your git working directory. Unit tests are *local* and no permission privileges are required.
 
​Unfortunately, because you've used sudo, you will now have to fix up lots of permissions in that directory to get things working again.​
 
I'll have a look at making ./ci-run fail under sudo (whilst preserving use as root for use in an LXC etc.)
 
​sudo is *only* required to use the system paths: $ sudo lava-server manage # uses /usr/lib/python3/dist-packages/
 
I tried without sudo at first and somehow the unit tests tried using /etc/lava-server/instance.conf and /etc/lava-server/settings.conf, so I tried again with sudo. It must've been a side effect of me running the installed "lava-server manage test" command inside my local lava workspace. I've fixed this by doing a "git clean -xdf".
 
Note the change in syntax.​
 
 
+ set -e+ getopts :pdty opt
+ shift 0
+ pep8 --ignore E501,E722 .
+ '[' -n '' ']'
+ echo 'Removing old .pyc files and cache'
Removing old .pyc files and cache
+ echo
 
+ find . -name '*.pyc' -delete
+ rm -rf ./.cache/
+ rm -rf ./__init__.py
+ echo 'Starting unit tests'
Starting unit tests
+ echo
 
+ '[' -z '' -a -z '' -a -z '' ']'
+ echo 'If it exists, a broken test database will be deleted without prompting.'
If it exists, a broken test database will be deleted without prompting.
+ python3 ./lava_server/manage.py test --noinput -v 2 lava_scheduler_app linaro_django_xmlrpc.tests lava_results_app
Traceback (most recent call last):
File "./lava_server/manage.py", line 78, in <module>
main()
File "./lava_server/manage.py", line 74, in main
execute_from_command_line(django_options)
File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python3/dist-packages/django/core/management/commands/test.py", line 29, in run_from_argv
super(Command, self).run_from_argv(argv)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/usr/lib/python3/dist-packages/django/core/management/commands/test.py", line 62, in handle
failures = test_runner.run_tests(test_labels)
File "/usr/lib/python3/dist-packages/django/test/runner.py", line 600, in run_tests
suite = self.build_suite(test_labels, extra_tests)
File "/usr/lib/python3/dist-packages/django/test/runner.py", line 526, in build_suite
suite = reorder_suite(suite, self.reorder_by, self.reverse)
File "/usr/lib/python3/dist-packages/django/test/runner.py", line 640, in reorder_suite
partition_suite_by_type(suite, classes, bins, reverse=reverse)
File "/usr/lib/python3/dist-packages/django/test/runner.py", line 663, in partition_suite_by_type
partition_suite_by_type(test, classes, bins, reverse=reverse)
File "/usr/lib/python3/dist-packages/django/test/runner.py", line 663, in partition_suite_by_type
partition_suite_by_type(test, classes, bins, reverse=reverse)
File "/usr/lib/python3/dist-packages/django/test/runner.py", line 667, in partition_suite_by_type
bins[i].add(test)
File "/usr/lib/python3/dist-packages/django/utils/datastructures.py", line 17, in add
self.dict[item] = None
TypeError: unhashable type: 'TestSchedulerAPI'
 
I have backed out all my changes and I still get the TypeErrors. I tried the latest in the master branch, and also the 2018.5 release tag. Could someone please let me know what I am doing incorrectly? Thanks!
 
Cheers,
Edmund

This message and any attachments may contain confidential information from Cypress or its subsidiaries. If it has been received in error, please advise the sender and immediately delete this message.
 
​(May be worth checking with Cypress about disclaimers on email going to publicly archived mailing lists...)​
 
 
IT policy. Hard to fight it.
 
--

Neil Williams
=============
neil.williams@linaro.org
http://www.linux.codehelp.co.uk/
 
Thanks,
Edmund
 

This message and any attachments may contain confidential information from Cypress or its subsidiaries. If it has been received in error, please advise the sender and immediately delete this message.