Hi,
This 1.7 release updated examples in the documentation, making them
more secure by default. It fixes bugs when submitting test results.
Also, there are new additions to the UI: now test results in the build
page are displaying failed ones by default. The user can toggle the
visualization to the old one as wanted. A bug in the collapse/close
button was fixed as well and by default, all suites/environment boxes
are expanded on page load.
Complete list of changes going in:
* api: rest: show testrun in test
* doc: make auth-token examples more secure by default
* doc: intro: add example of submit test results with requests
* ci:
* models: backend: handle duplicated testjob as new exception
* models: refactor try-except block
* tasks: clean test job failure message after successful submission
* core:
* models: add environment to MetricThreshold
* tasks: ensure job_id to be integer or string
* models: finish builds status earlier
* frontend:
* test_results: expand all groupings by default
* build: test results: show failures only by default
* templatetags: add helper function to update GET parameters
* test_results: fix collapse/expand button
* project_settings: add environments to project settings UI
* templates: project_settings: fix basics page title
* requirements.txt: top off django version
Cheers,
Charles
Hi,
This 1.6.1 release fixes a bug when SQUAD works with SQS FIFO queues.
The bug prevented newer tasks from being delivered to workers until
older tasks are complete.
Complete list of changes that went in:
* squad: celery: make tasks groups unique on SQS
* pytest.ini: include more tests that were being ignored
* pytest.ini: bump minimal code coverage
* core: tasks: fix bug on testrun status table where 'has_metrics'
defaults to false for testruns that have metrics
* api: rest: enable displaying null for empty metrics and tests on
testrun api view
Cheers,
Charles
Hi,
This 1.6 release adds support to queue suffix names, which enables
fixing a bug that happens if SQUAD was configured with AWS SQS and a
lab entered in maintenance state.
It also adds the ability to switch test results layout when viewing a
build home page.
Complete list of changes going in:
* ci: backend: lava: add exception when a lava backend is offline
* frontend:
* build: add option to change test results layout
* views: order environments columns by alphabetical order
* settings:
* fix notification tasks routing
* add support to suffix-named queues
Cheers,
Charles
Hi,
This 1.5 release fixes a bug that made SQUAD submit a single
TestJob multiple times. It also allows project admins to create
copies of projects with the `Save as` option.
Complete list of changes going in:
* ci: tasks: avoid multiple submissions
* core: admin: enable `save as` option for projects
* frontend: project_settings: add advanced settings tab
* Updated translation:
* Translated using Weblate (Norwegian Bokmål)
Cheers,
Charles
Hi,
This 1.4 release fixes a bug when viewing all test results page and
enables more filtering options for build and testrun api endpoints.
Complete list of changes going in:
* api:
* rest: enable filtering testruns by 'completed'.
* rest: enable created date filtering on for builds in api
* frontend:
* tests: remove unnecessary ordering
* tests: reduce queries to list tests
* tests: simplify count of pages
* tests: remove duplicate queries to metadata
* tests: fix bug when listing tests without metadata
Cheers,
Charles
Hi,
This 1.3.1 release includes a minor bug in the api and support to work
with AWS SQS:
* settings:
* add support to custom polling interval
* add support to prefix-named queues
* turn on debug only when needed
* api: fix URL pattern for api/ paths
* http: authenticate users before checking permissions
* Add coverage testing with pytest
Hi,
This 1.3 release fixes a 500 http error code when accessing linux-log-parser
tests, also improving its log detection, including `WARNINGS`.
The release also fixes some minor issues related to docker setup, among
other new features and fixes that you can see in the full log below:
* core:
* test_history: handle tests with no metadata
* plugins: linux_log_parser: improve kernel log parsing
* frontend: reduce query time fetching metric names
* misc:
* debug: add django debug toolbar
* doc: add firewall note when running on docker
* Dockerfile: ignore version constraints from requirements.txt
Charles
Hi,
This 1.2 release fixes a couple of performance issues when fetching testjobs
from backends and when using the REST api, among other small fixes.
It stops ignoring duplicated tests for same environments and test suites
when calculating build summary (e.g. number of passing and failing tests).
Instead, use partial summaries already calculated for test runs.
We tweaked the backend code that fetches tests before calculating
regressions and fixes. If a build had a significant high number of test runs
it would make comparison much slower. So we avoid querying all test runs at
once when running `TestComparison`.
There were changes in the backend code of the REST api that reduced the number
of trips to db, making some endpoints load faster.
Complete changelog below:
# 1.2
* core:
* comparison: remove the use of iterator over tests
* comparison: filter tests by chunks of testruns
* comparison: fetch only id from testruns
* comparison: filter tests by testrun ids
* comparison: prefetch known issues
* comparison: lowered number of testruns chunk
* tasks: ReceiveTestRunData: ignore tests and metrics with long names
* models: remove duplicate call to build.finished
* test_summary: simplify summary calculation
* project: reduce amount of trips to database
* environment: set default expected_test_runs to zero
* build: make finished false when no jobs or testruns
* migrations: add missing migration for Django upgrade
* Group: sort aggregate query explicitly
* plugins: ignore most parameters
* ci:
* lava: handle unicode errors gracefully
* lava: fetch jobs right away
* listener: respect Backend listen_enabled
* Backend: add listen_enabled attribute
* doc:
* fix typo in .readthedocs.yml
* add configuration for readthedocs build
* api:
* disable post forms
* rest: reduce amount of queries and speed up some queries
* utils: remove duplicate DRF backend
* rest: avoid queries containing all projects
* rest: test: reduce number of queries in the database
* rest: remove deprecation warnings against django-filters 2.x
* Added translations:
* French
* misc:
* worker: don't constrain concurrency by default
* squad.urls: replace deprecated shortcut function
* tests: remove unecessary usage of Django's TestCase class
* core, ci: stop pytest from confusing our Test* classes with tests
* test_test: avoid pytest confusing helper method with a test
* pytest.ini: add pytest configuration
Hello,
squad 1.1 was just released. There are no large changes, but since there
was some internal reorganization it's being released as a minor update
and not a 1.0.x. Everything should just work when upgrading, though.
Most of the changes are targetting performance improvements in the
processing of background tasks.
Changelog:
* ci/lava: replace concatenation with StringIO
* settings: split tasks to separate queues
* requirements.txt: fix minimal version for pyyaml
* squad.run.worker: listen on all configured queues by default
* doc: document how to manage different queues
Hello,
We have just released squad 1.0.3. This release includes a fix for a
longstanding performance issue when fetching very large lava logs.
Full changelog:
# 1.0.3
* api: utils: add CursorPaginationWithPageSize
* Added translation using Weblate (French)
* ci/lava: adjust hangling of malformed logs yaml for newer PyYAML
* ci/lava: resubmit: exit early
* ci/lava: extract handling of failed submissions
* ci/lava: resubmit: handle errors on the LAVA side
* api: resubmit: handle submission errors gracefully
* ci: lava: speed up conversion of YAML of logs to pain text
Hi,
This release fixes a small issue with the gerrit plugin that
attempts to send notification with malformed patch_id.
Complete changelog below:
* plugins:
* plugins: gerrit: check patch_id before sending notification
* Updated translations:
* French (updated)
Hi,
This release includes bug fixes regarding yaml parsing. There was a
bug that saved test job definitions as bytes instead of strings,
messing up with that job completely.
Full changelog below:
* core:
* `yaml_validator`: drop usage of simple yaml.load
* api:
* api: ci: fix definition file encoding
* Updated translations:
* Polish (completed)
* French (added)
Charles
Hi all,
I have an issue which is certainly related to bad configuration.
I run xTS test job with LAVA to test Android images, so it makes a lot of
results for SQUAD to process and store (around 500k per build). My db
backups start to take some space, so I want to clean old results. But when
I try to delete a build, the connection is reset by SQUAD. I guess this is
due to worker timeout, so how can I fix this ?
Best regards,
Axel
Hello,
This 1.0 release marks the availability of a feature set that we envisioned
back when squad was started. We still have a lot to improve, though, so we will
continue to work on new features and improvements.
This release also brings compatibility with Django 2, which we now use by
default. However, using with Django 1 is still supported. We recommend Python
3.6 or newer.
Since we are bumping the major version number, we are also making two
backwards-incompatible changes that you need to be aware of:
* Test results from incomplete jobs are now completely ignored.
* The LAVA CI backend used to map the success of the "auto-login-action" from a
lava job to a test called "boot". This is now ignored by default. If you rely
on this, you can re-enable this behavior by setting `CI_LAVA_HANDLE_BOOT` in
your project settings (only available in the Django admin interface for the
moment). See the documentation for details.
Below, you will find a summary of the changes in this release.
* frontend:
* frontend: templatetags: add str to global functions for templating
* frontend: compare-project: refactor project comparison UI
* frontend: compare-project: order projects alphanumerically
* frontend: compare-project: compare different builds
* frontend: filter comparison by transitions
* frontend: fix compare projects submit
* frontend: shrink transitions filter table
* frontend: translation: translate django templates
* frontend: `test_history`: fix broken javascript
* api:
* api: rest: add ComplexFilterBackend to GroupViewSet
* api: rest: give write only access to _password field
* ci:
* ci: ignore all results from incomplete test jobs
* ci: backend: lava: change option to handle lava boot results
* core:
* core: `Build.test_suites_by_environment`: make ordering of test results consistent
* core: admin: mark password field as not required
* misc
* Add license information for consumption by reuse
* Added reuse (SPDX compliance tool) to travis.
* migrate to django2
* doc:
* doc: ci: add CI_LAVA_HANDLE_BOOT to docs
* plugins:
* plugins: gerrit: remove `capture_output`
* plugins: gerrit: set code-review to -1 when tests fail
* Updated translations:
* Portuguese (Brazil)
* Polish
* Norwegian Bokmål
Hello,
I have just released squad 0.68. The changelog for this release is the
following:
* Translated using Weblate (Portuguese (Brazil))
* test/karma.conf.js: make chromium work on docker
* api: rest: fix rest-framework `detail_route`
* frontend
* frontend: js: update lodash to 4.17.14
* frontend: compare-tests: fix auto complete initialization
* frontend: compare-tests: add auto-width to select2
* frontend: css: fix word-wrap
* core:
* core: add management sub-command to create/update auth tokens
* core: api: support passing test log in the JSON file
* core: plugins: fix builtin plugins path
* core: plugins: add gerrit builtin plugin
* ci
* ci: lava: fetch test logs if available
* ci/backends/lava: modify unit tests to check logs retrieval
* docs: document notification plugins
Hello,
I have just released squad 0.67. This release brings a few nice
features:
- You can now make build comparisons from the list of builds in the
project page
- You can now compare builds or projects by tests results or by metrics.
- If you have metrics with multiple measurements, the range of values
will be displayed alongside the mean in the charts.
- the lava CI backend can now ignore boot results on a per-project
basis.
Enjoy!
------------------------------------------------------------------------
Full changelog for squad 0.67:
* frontend:
* frontend: combine compare menu
* frontend: add compare build to build list
* frontend: order projects alphanumerically
* frontend: rename "Explore" menu to "Groups"
* frontend: metrics: display range of values
* frontend: metrics: fix Y axis configuration
* frontend: add option to compare build and projects by metrics
* frontend: bring compare menu to front
* frontend: use gettext in login template
* javascript: changed floatThread to floatThead
* ci:
* ci: backend: lava: extract settings to separate method
* ci: backend: lava: add option to ignore lava boot results
* doc:
* doc: ci: add `CI_LAVA_IGNORE_BOOT` to docs
* core
* core: queries: make data entries more readable
* core: queries: expose measurement ranges
* core: add MetricComparison class
* scripts/testdata: generate more interesting metrics
* i18n:
* New translation: Spanish (Mexico)
* Updated translation: Norwegian Bokmål
* Updated translation: Polish
* Updated translation: Portuguese (Brazil)
Hi all,
I saw you have a repository with tradefed and ltp plugins for SQUAD.
If I understand correctly, those plugins retrieve CTS/VTS/LTP logs to
attach the error logs to failed test cases.
My questions are :
How can I setup those plugins to work with my SQUAD instance ?
Do I need to use a specific tradefed test definition to interface it with
the plugin ?
Does the job submission works the same way ? using the submitjob API ?
Thank you in advance,
Axel
Hi,
I have just released squad 0.66. One important change is that we are now
managing translation via weblate:
https://hosted.weblate.org/projects/squad/
So translating is just a matter of going there and translating string by
string. Translations are synced back to the source repository daily.
The full changelog for this release is below. Enjoy!
* frontend
* frontend/templatetags: fix pagination get_page_url
* frontend: fix floatThead
* charts: always redraw dynamic metrics
* api:
* api: allow Authorization: Token in resubmit calls
* api: return proper value when resubmit is not successful
* core:
* metrics: Add dynamic metric summary
* i18n
* Added a partial Norwegian Bokmål translation
* Updated Brazilian Portuguese translation
* doc/translating.rst: add instructions to translate on weblate
Hi all,
I noticed that emails are sent even when my build is not in "finished"
state.
The notification is sent on timeout.
Do you have an idea of what could be the problem?
Thanks,
Axel
Hi,
I have just released squad 0.65. The changelog is the following:
* i18n: add Brazilian portuguese translation for SQUAD UI
* core
* core: `import_data`: adjust dates on imported data
* core: `import_data`: ignore test runs with no metadata
* core: `import_data`: display some indication of progress
* Add environment to MetricsSummary and TestSummary
* Add BuildSummary class
* doc:
* doc/api: fix HTTP method for resubmit endpoints
* doc: add details about LAVA multinode jobs
* api:
* api: fix authentication in resubmit API
* api: fix tests for CI API
* ci:
* ci: allow cloning LAVA results with measurements
* ci: add support for LAVA multinode jobs
* ci: make sure null backend is never used
* frontend
* Add metrics summary to charts
* Make default charts to be overall metrics summary per build
--
Antonio Terceiro
Software Engineer - Linaro
http://www.linaro.org
Hi,
There is a request to allow managing email subscriptions when creating
projects via REST API. Right now there is no such option. I took a
quick look at the REST API code and I can see 2 options:
1. expose Subscription objects to the API
This would be the easiest option as privileged users would be able to
add/remove/modify the objects. This comes at a cost however as it
would expose usernames and email addresses of our users.
2. add "subscribe" endpoint to Project
The path would be like /api/projects/<id>/subscribe
This would be a POST call with only email address included. If the
user with such email address is already in the database it would be
subscribed to the project notifications. If there isn't a user, email
address only would be subscribed. This remove the risk of exposing
users and emails. We would probably also need 'unsubscribe' endpoint
in such scenario.
I lean towards option 2. If there are other suggestions I'm keen to hear them.
milosz
Hi,
I wrote the script
https://github.com/chase-qi/tools/blob/master/squad/create_project.py
to create squad project if it doesn't exist. It works fine with public
project, but doesn't work well with private project. The reason is it
fails to get the new created private project.
For the first time, private project can be created successfully.
```
(env) cq@tp:~/github/chase-qi/tools/squad$ ./create_project.py -p
lkft-gps-private -P False
2019-03-22 17:05:44,699: get_list: INFO: groups get request status code: 200
2019-03-22 17:05:46,745: get_list: INFO: projects get request status code: 200
2019-03-22 17:05:48,797: main: INFO: Data to POST:
{
"group": "https://staging-qa-reports.linaro.org/api/groups/5/",
"slug": "lkft-gps-private",
"name": "lkft-gps-private",
"is_public": "False",
"html_mail": false,
"moderate_notifications": false,
"description": "",
"important_metadata_keys": "build-url\r\ngit branch\r\ngit
commit\r\ngit describe\r\ngit repo",
"enabled_plugins_list": [
"ltp"
],
"wait_before_notification": 600,
"notification_timeout": 18000,
"data_retention_days": 0,
"project_settings": "{}",
"custom_email_template":
"https://staging-qa-reports.linaro.org/api/emailtemplates/1/"
}
2019-03-22 17:05:50,432: creat_project: INFO: Projects post request
status code: 201
2019-03-22 17:05:50,432: creat_project: INFO: Project created:
{
"url": "https://staging-qa-reports.linaro.org/api/projects/195/",
"builds": "https://staging-qa-reports.linaro.org/api/projects/195/builds/",
"id": 195,
"full_name": "staging-lkft/lkft-gps-private",
"slug": "lkft-gps-private",
"name": "lkft-gps-private",
"is_public": false,
"html_mail": false,
"moderate_notifications": false,
"description": "",
"important_metadata_keys": "build-url\r\ngit branch\r\ngit
commit\r\ngit describe\r\ngit repo",
"enabled_plugins_list": "ltp",
"wait_before_notification": 600,
"notification_timeout": 18000,
"data_retention_days": 0,
"project_settings": "{}",
"group": "https://staging-qa-reports.linaro.org/api/groups/5/",
"custom_email_template":
"https://staging-qa-reports.linaro.org/api/emailtemplates/1/"
}
```
When creating the same project again, the following error returned.
```
(env) cq@tp:~/github/chase-qi/tools/squad$ ./create_project.py -p
lkft-gps-private -P False
2019-03-22 17:05:56,582: get_list: INFO: groups get request status code: 200
2019-03-22 17:05:58,628: get_list: INFO: projects get request status code: 200
2019-03-22 17:06:00,674: main: INFO: Data to POST:
{
"group": "https://staging-qa-reports.linaro.org/api/groups/5/",
"slug": "lkft-gps-private",
"name": "lkft-gps-private",
"is_public": "False",
"html_mail": false,
"moderate_notifications": false,
"description": "",
"important_metadata_keys": "build-url\r\ngit branch\r\ngit
commit\r\ngit describe\r\ngit repo",
"enabled_plugins_list": [
"ltp"
],
"wait_before_notification": 600,
"notification_timeout": 18000,
"data_retention_days": 0,
"project_settings": "{}",
"custom_email_template":
"https://staging-qa-reports.linaro.org/api/emailtemplates/1/"
}
2019-03-22 17:06:02,309: creat_project: INFO: Projects post request
status code: 400
2019-03-22 17:06:02,310: creat_project: INFO: Project created:
{
"non_field_errors": [
"The fields group, slug must make a unique set."
]
}
(env) cq@tp:~/github/chase-qi/tools/squad$
```
The script able to check if the project to create already exist by
comparing the project name with the existing projects. `However,
requests.get(url, headers=headers)` only return public project and old
existing private project, it doesn't return the new created private
ones.
Any ideas why?
Thanks,
Chase
Hi all,
after submitting a watchjob request for a test already finished in lava
side, the test status (OK, Fail) is visible in /admin but fetch is not
happening automatically. It works if I start fetch manually.
curl 0.0.0.0:5000/api/watchjob/lava/63_test/ver0315/board1 --header
"Auth-Token: xxxxx76d4a6a5646abfa9d53xxxxxxxxx" --form
"backend=lava_swtest" --form testjob_id=38721
Could you explain how can I make it to fetch automatically?
Thanks for your help!
Fabiano