Skip to content
This repository has been archived by the owner on Mar 11, 2021. It is now read-only.

Random test failures because of work item creation error #1676

Closed
xcoulon opened this issue Oct 2, 2017 · 0 comments
Closed

Random test failures because of work item creation error #1676

xcoulon opened this issue Oct 2, 2017 · 0 comments
Assignees

Comments

@xcoulon
Copy link
Contributor

xcoulon commented Oct 2, 2017

Sometimes, a test fails with the following unique constraint error:

pq: duplicate key value violates unique constraint "work_item_number_sequences_pkey"

This seems to happen when a couple of work items are created in a new space (eg: https://github.com/fabric8-services/fabric8-wit/blob/master/search/search_repository_whitebox_test.go#L53)

@xcoulon xcoulon self-assigned this Oct 2, 2017
xcoulon added a commit to xcoulon/fabric8-wit that referenced this issue Oct 2, 2017
…vices#1676)

Make sure that a sequence number initialized at `0` is created
when the space itself is created, in order to allow for locking
of the row in the `work_item_sequence_numbers` table.

Signed-off-by: Xavier Coulon <xcoulon@redhat.com>
xcoulon added a commit to xcoulon/fabric8-wit that referenced this issue Oct 2, 2017
…vices#1676)

Move the `work item number sequence` in its own subpackage, and
create its dedicated repository with 2 methods: `Create` and `NextVal`.
Use a new `ID` column for the primary key, so GORM will issue a proper
`INSERT` query when a new number sequence is created.
Make sure a space has a sequence initialized upon its own creation

Other minor fixes in tests (eg: length of area name, etc.)

Fixes fabric8-services#1676

Signed-off-by: Xavier Coulon <xcoulon@redhat.com>
xcoulon added a commit to xcoulon/fabric8-wit that referenced this issue Oct 2, 2017
…vices#1676)

Move the `work item number sequence` in its own subpackage, and
create its dedicated repository with 2 methods: `Create` and `NextVal`.
Use a new `ID` column for the primary key, so GORM will issue a proper
`INSERT` query when a new number sequence is created.
Make sure a space has a sequence initialized upon its own creation

Other minor fixes in tests (eg: length of area name, etc.)

Fixes fabric8-services#1676

Signed-off-by: Xavier Coulon <xcoulon@redhat.com>
xcoulon added a commit that referenced this issue Oct 12, 2017
Using the `Last-Modified` response header when possible
Also, making sure that the list of spaces is always ordered by
`updated_at DESC` to get the most recents spaces first.

Move the `work item number sequence` in its own subpackage.

Refactored the test to use the TestFixture to initialise the
work items from the data set.

Using an `UPSERT` statement to avoid creating then updating
 the work item number sequence, which also avoids putting a `LOCK`
 on the row (using the `... FOR UPDATE` option in the `SELECT`
 statement)

Remove the `optionalKeywords` which contained the work item number
but failed when the 3rd work item was retrieved because its number
('3') would match the description. This worked in the past when the
number did not exist and the search was based on the ID (UUID).

Added some weight on the work item number (`*A`) when the URL matches 
a known one and the number can be extracted.

Also, add a test to search by number using the `number:%d` query.

Adding a test to create work items concurrently

Refactor identities creation in test: using UUIDs of created identities instead of usernames
also, move a comment to `init()` where it belongs
also, comment on use of `:*A` in fulltext search

Also: move some log statements to `DEBUG` instead of `INFO`
to reduce the noise during test executions

Fixes #1676

Signed-off-by: Xavier Coulon <xcoulon@redhat.com>
aslakknutsen pushed a commit to openshiftio/saas-openshiftio that referenced this issue Oct 25, 2017
to fabric8-services/fabric8-wit@c6fc618

As you can see there are quite a lot of changes (**83 files changed, 2914 insertions(+), 728 deletions(-)**) and the delta is quite huge. We might want to deploy more often to reduce this delta...

## Quiet CI (fabric8-services/fabric8-wit#1704)
    
Installs RPM more quietly, builds docker containers more quietly, and pulls docker images more quietly.


## `make dev` fails to start because of container connection issue on macOS (fabric8-services/fabric8-wit#1705)
    
remove the `network_mode` option in the containers
specify the host/port for the `auth` service to connect to its `db`, using the
internal Postgres port (5432) and using the container's hostname (the container
name itself)
same applies for the `core` service to connect to its `db`

Fixes fabric8-services/fabric8-wit#1705

## Random test failures because of work item creation error (fabric8-services/fabric8-wit#1676)
    
Using the `Last-Modified` response header when possible
Also, making sure that the list of spaces is always ordered by
`updated_at DESC` to get the most recents spaces first.

Move the `work item number sequence` in its own subpackage.

Refactored the test to use the TestFixture to initialise the
work items from the data set.

Using an `UPSERT` statement to avoid creating then updating
 the work item number sequence, which also avoids putting a `LOCK`
 on the row (using the `... FOR UPDATE` option in the `SELECT`
 statement)

Remove the `optionalKeywords` which contained the work item number
but failed when the 3rd work item was retrieved because its number
('3') would match the description. This worked in the past when the
number did not exist and the search was based on the ID (UUID).

Added some weight on the work item number (`*A`) when the URL matches
a known one and the number can be extracted.

Also, add a test to search by number using the `number:%d` query.

Adding a test to create work items concurrently

Refactor identities creation in test: using UUIDs of created identities instead of usernames
also, move a comment to `init()` where it belongs
also, comment on use of `:*A` in fulltext search

Also: move some log statements to `DEBUG` instead of `INFO`
to reduce the noise during test executions

Fixes fabric8-services/fabric8-wit#1676

## WIP sirupsen-case for fabric8-wit (fabric8-services/fabric8-wit#1672)
    
Goa 1.3 now seems to check length requirements in from the design.

* Update golden files

by running these commands:

$ go test -v github.com/fabric8-services/fabric8-wit/controller -run \
 TestSuiteWorkItemType -testify.m TestCreate -update

$ go test -v github.com/fabric8-services/fabric8-wit/controller -run \
 TestSuiteWorkItemType -testify.m TestShow -update

$ go test -v github.com/fabric8-services/fabric8-wit/controller -run \
 TestSuiteWorkItemType -testify.m TestValidate -update

* Switch postgres to registry.centos.org/postgresql/postgresql:9.6 in CI tests

* Forgot to pass F8_RESOURCE_REMOTE=1 when running remote tests WITH coverage

Fixes fabric8-services/fabric8-wit#1395

## Make link topology a type based on string (fabric8-services/fabric8-wit#1710)
    
* Make link topology a type based on string
* Rename CheckValidTopology to CheckValid and make it a member function of a Topology


## Simplify usage of test fixture customization functions (fabric8-services/fabric8-wit#1711)

## Added "not found" cases for search by number (fabric8-services/fabric8-wit#1712)
    
* Update search_repository_whitebox_test.go

Update TestSearch - By Number

Add "not found" case for when searching by space and not by space.

Added case with single and multiple results for when searching by number without a space.

## 'make dev' fails to start because of container connection issue on macOS (fabric8-services/fabric8-wit#1705) (fabric8-services/fabric8-wit#1713)
    
keep the previous changes in `docker-compose.macos.yml` for now
revert the changes as they break on Linux

Fixes fabric8-services/fabric8-wit#1705

## Improve the field type system and add tests (fabric8-services/fabric8-wit#1130)
    
We now support a "bool" type for fields in a work item type.

I've added a lot of tests for valid and invalid field types on both, repo- and controller-level.

The field type `KindWorkitemReference` has been removed.

## Do not import pkg 'notification' in pkg 'test' (fabric8-services/fabric8-wit#1716)
    
Move the 'test/notification.go' file into a subpackage
Rename the 'NotificationChannel' into 'FakeNotificationChannel'
to enforce its testing purpose.

Fixes fabric8-services/fabric8-wit#1716

## Work items disappear after unlinking (fabric8-services/fabric8-wit#1708)
    
* Work items disappear after unlinking (fabric8-services/fabric8-wit#1708)

Fix the SQL filter query by making sure only undeleted
links are taken into account when the `parentexists` filter
is activated.
Also, reduce the number of subselects  and add index
on table and improve query

Also, refactor the `search/search_repository_blackbox_test.go`
by using sub tests.

Also, make sure that tests in `TestSearchParentExists` include
the `userSpaceID` in the search expression.

Fixes fabric8-services/fabric8-wit#1708
    
## Creator filter (fabric8-services/fabric8-wit#1715)
    
Filter for work item creator

## Use just `state` instead of `workitemstate` (fabric8-services/fabric8-wit#1721)

## Only space collaborator and WI creators should be able to update/delete links (fabric8-services/fabric8-wit#1718)

## Enable Authorization by default (fabric8-services/fabric8-wit#1723)
        
Previously authorization had to be enabled explicitly in dev mode. With this change, WIT talks to AUTH which handles the authorization implementation details ( like talking to keycloak ).

## Copy links to relationships for `List space` endpoint (1/2) (fabric8-services/fabric8-wit#1687)
    
This ensure that the response will be compliant with the JSON-API specification.

Fixes fabric8-services/fabric8-wit#1687

##  Save description when new iteration created (fabric8-services/fabric8-wit#1726)
    
Fixes: https://openshift.io/openshiftio/openshiftio/plan/detail/1555

## Delete iteration API  (fabric8-services/fabric8-wit#1683)

Allow the user to delete the iteration (soft-delete) using API.

##  WIP: Make the parenting link type have a tree-topology (fabric8-services/fabric8-wit#1729)
    
Based on [this discussion](https://chat.openshift.io/developers/pl/gqwxx3mj13fejfdwqqc61mrwba) we decided to make the parenting link type have a tree topology.
    
See also fabric8-ui/fabric8-planner#2291 (comment)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant