Skip to content

Commit 6539a98

Browse files
authored
test(rm): fix DeviceRemover tests to work regardless of order (astarte-platform#1496)
Some of these tests drop database tables to validate behavior in edge cases. However, if other tests were run after dropping tables, subsequent tests would find a corrupted initial setup and would fail. This change ensures that the keyspace is correctly setup for each test. Signed-off-by: Davide Briani <davide.briani@secomind.com>
1 parent 41e1a33 commit 6539a98

2 files changed

Lines changed: 17 additions & 24 deletions

File tree

apps/astarte_realm_management/test/astarte_realm_management/device_removal/core_test.exs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ defmodule Astarte.RealmManagement.DeviceRemover.CoreTest do
2424
alias Astarte.DataAccess.Devices.Device
2525
alias Astarte.Core.CQLUtils
2626
alias Astarte.RealmManagement.Engine
27-
alias Astarte.RealmManagement.Migrations.CreateDatastreamIndividualMultiInterface
2827
alias Astarte.RealmManagement.Queries
2928
alias Astarte.DataAccess.Realms.Realm
3029
alias Astarte.DataAccess.Repo
@@ -35,18 +34,17 @@ defmodule Astarte.RealmManagement.DeviceRemover.CoreTest do
3534

3635
import ExUnit.CaptureLog
3736

37+
setup %{realm: realm} do
38+
setup!(realm)
39+
end
40+
3841
describe "Device remover Core" do
3942
@describetag :device_remover
4043

4144
property "delete_individual_datastream/2 removes individual datastream data of a valid device",
4245
%{realm: realm} do
4346
keyspace = Realm.keyspace_name(realm)
4447

45-
Ecto.Migrator.run(Repo, [{0, CreateDatastreamIndividualMultiInterface}], :up,
46-
prefix: keyspace,
47-
all: true
48-
)
49-
5048
check all(
5149
device_id <- Astarte.Core.Generators.Device.id(),
5250
individual_datastreams <-
@@ -69,11 +67,6 @@ defmodule Astarte.RealmManagement.DeviceRemover.CoreTest do
6967
%{realm: realm} do
7068
keyspace = Realm.keyspace_name(realm)
7169

72-
Ecto.Migrator.run(Repo, [{0, CreateDatastreamIndividualMultiInterface}], :up,
73-
prefix: keyspace,
74-
all: true
75-
)
76-
7770
Repo.query!("DROP TABLE #{keyspace}.individual_datastreams;")
7871

7972
check all(device_id <- Astarte.Core.Generators.Device.id()) do

apps/astarte_realm_management/test/support/helpers/database.ex

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@ defmodule Astarte.Test.Helpers.Database do
2323
alias Astarte.DataAccess.Realms.Realm
2424

2525
@create_keyspace """
26-
CREATE KEYSPACE :keyspace
26+
CREATE KEYSPACE IF NOT EXISTS :keyspace
2727
WITH
2828
replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND
2929
durable_writes = true;
3030
"""
3131

3232
@drop_keyspace """
33-
DROP KEYSPACE :keyspace
33+
DROP KEYSPACE IF EXISTS :keyspace
3434
"""
3535

3636
@create_realms_table """
37-
CREATE TABLE :keyspace.realms (
37+
CREATE TABLE IF NOT EXISTS :keyspace.realms (
3838
realm_name varchar,
3939
device_registration_limit int,
4040
@@ -43,7 +43,7 @@ defmodule Astarte.Test.Helpers.Database do
4343
"""
4444

4545
@create_kv_store """
46-
CREATE TABLE :keyspace.kv_store (
46+
CREATE TABLE IF NOT EXISTS :keyspace.kv_store (
4747
group varchar,
4848
key varchar,
4949
value blob,
@@ -53,7 +53,7 @@ defmodule Astarte.Test.Helpers.Database do
5353
"""
5454

5555
@create_names_table """
56-
CREATE TABLE :keyspace.names (
56+
CREATE TABLE IF NOT EXISTS :keyspace.names (
5757
object_name varchar,
5858
object_type int,
5959
object_uuid uuid,
@@ -63,7 +63,7 @@ defmodule Astarte.Test.Helpers.Database do
6363
"""
6464

6565
@create_devices_table """
66-
CREATE TABLE :keyspace.devices (
66+
CREATE TABLE IF NOT EXISTS :keyspace.devices (
6767
device_id uuid,
6868
aliases map<ascii, varchar>,
6969
introspection map<ascii, int>,
@@ -95,7 +95,7 @@ defmodule Astarte.Test.Helpers.Database do
9595
"""
9696

9797
@create_interfaces_table """
98-
CREATE TABLE :keyspace.interfaces (
98+
CREATE TABLE IF NOT EXISTS :keyspace.interfaces (
9999
name ascii,
100100
major_version int,
101101
minor_version int,
@@ -115,7 +115,7 @@ defmodule Astarte.Test.Helpers.Database do
115115
"""
116116

117117
@create_endpoints_table """
118-
CREATE TABLE :keyspace.endpoints (
118+
CREATE TABLE IF NOT EXISTS :keyspace.endpoints (
119119
interface_id uuid,
120120
endpoint_id uuid,
121121
interface_name ascii,
@@ -139,7 +139,7 @@ defmodule Astarte.Test.Helpers.Database do
139139
"""
140140

141141
@create_simple_triggers_table """
142-
CREATE TABLE :keyspace.simple_triggers (
142+
CREATE TABLE IF NOT EXISTS :keyspace.simple_triggers (
143143
object_id uuid,
144144
object_type int,
145145
parent_trigger_id uuid,
@@ -152,7 +152,7 @@ defmodule Astarte.Test.Helpers.Database do
152152
"""
153153

154154
@create_individual_properties_table """
155-
CREATE TABLE :keyspace.individual_properties (
155+
CREATE TABLE IF NOT EXISTS :keyspace.individual_properties (
156156
device_id uuid,
157157
interface_id uuid,
158158
endpoint_id uuid,
@@ -179,7 +179,7 @@ defmodule Astarte.Test.Helpers.Database do
179179
"""
180180

181181
@create_individual_datastreams_table """
182-
CREATE TABLE :keyspace.individual_datastreams (
182+
CREATE TABLE IF NOT EXISTS :keyspace.individual_datastreams (
183183
device_id uuid,
184184
interface_id uuid,
185185
endpoint_id uuid,
@@ -206,7 +206,7 @@ defmodule Astarte.Test.Helpers.Database do
206206
"""
207207

208208
@create_groups_table """
209-
CREATE TABLE :keyspace.grouped_devices (
209+
CREATE TABLE IF NOT EXISTS :keyspace.grouped_devices (
210210
group_name varchar,
211211
insertion_uuid timeuuid,
212212
device_id uuid,
@@ -215,7 +215,7 @@ defmodule Astarte.Test.Helpers.Database do
215215
"""
216216

217217
@create_deletion_in_progress_table """
218-
CREATE TABLE :keyspace.deletion_in_progress (
218+
CREATE TABLE IF NOT EXISTS :keyspace.deletion_in_progress (
219219
device_id uuid,
220220
vmq_ack boolean,
221221
dup_start_ack boolean,

0 commit comments

Comments
 (0)