massive controller tests refactored
This commit is contained in:
parent
831081829b
commit
db07771dc5
@ -25,7 +25,6 @@ import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
import org.thingsboard.common.util.ThingsBoardExecutors;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.Tenant;
|
||||
@ -44,7 +43,8 @@ import static org.hamcrest.Matchers.containsString;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
public abstract class BaseCustomerControllerTest extends AbstractControllerTest {
|
||||
static final TypeReference<PageData<Customer>> PAGE_DATA_CUSTOMER_TYPE_REFERENCE = new TypeReference<>() {};
|
||||
static final TypeReference<PageData<Customer>> PAGE_DATA_CUSTOMER_TYPE_REFERENCE = new TypeReference<>() {
|
||||
};
|
||||
|
||||
ListeningExecutorService executor;
|
||||
|
||||
@ -215,6 +215,8 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest
|
||||
} while (pageData.hasNext());
|
||||
|
||||
assertThat(customers).containsExactlyInAnyOrderElementsOf(loadedCustomers);
|
||||
|
||||
deleteEntitiesAsync("/api/customer/", loadedCustomers, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -275,26 +277,14 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest
|
||||
|
||||
assertThat(customersTitle2).as(title2).containsExactlyInAnyOrderElementsOf(loadedCustomersTitle2);
|
||||
|
||||
List<ListenableFuture<ResultActions>> deleteFutures = new ArrayList<>(143);
|
||||
for (Customer customer : loadedCustomersTitle1) {
|
||||
deleteFutures.add(executor.submit(() ->
|
||||
doDelete("/api/customer/" + customer.getId().getId().toString())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
Futures.allAsList(deleteFutures).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/customer/", loadedCustomersTitle1, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4, 0, title1);
|
||||
pageData = doGetTypedWithPageLink("/api/customers?", PAGE_DATA_CUSTOMER_TYPE_REFERENCE, pageLink);
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
|
||||
deleteFutures = new ArrayList<>(175);
|
||||
for (Customer customer : loadedCustomersTitle2) {
|
||||
deleteFutures.add(executor.submit(() ->
|
||||
doDelete("/api/customer/" + customer.getId().getId().toString())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
Futures.allAsList(deleteFutures).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/customer/", loadedCustomersTitle2, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4, 0, title2);
|
||||
pageData = doGetTypedWithPageLink("/api/customers?", PAGE_DATA_CUSTOMER_TYPE_REFERENCE, pageLink);
|
||||
|
||||
@ -27,7 +27,6 @@ import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
import org.thingsboard.common.util.ThingsBoardExecutors;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.Device;
|
||||
@ -58,7 +57,6 @@ import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
||||
|
||||
@Slf4j
|
||||
public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
static final int TIMEOUT = 30;
|
||||
static final TypeReference<PageData<Device>> PAGE_DATA_DEVICE_TYPE_REF = new TypeReference<>() {
|
||||
};
|
||||
|
||||
@ -203,7 +201,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals("typeB", deviceTypes.get(1).getType());
|
||||
Assert.assertEquals("typeC", deviceTypes.get(2).getType());
|
||||
|
||||
deleteDevicesAsync("/api/device/", devices);
|
||||
deleteEntitiesAsync("/api/device/", devices, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -440,7 +438,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
log.debug("asserting");
|
||||
assertThat(devices).containsExactlyInAnyOrderElementsOf(loadedDevices);
|
||||
log.debug("delete devices async");
|
||||
deleteDevicesAsync("/api/device/", loadedDevices).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/device/", loadedDevices, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
log.debug("done");
|
||||
}
|
||||
|
||||
@ -501,7 +499,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
|
||||
assertThat(devicesTitle2).as(title2).containsExactlyInAnyOrderElementsOf(loadedDevicesTitle2);
|
||||
|
||||
deleteDevicesAsync("/api/device/", loadedDevicesTitle1).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/device/", loadedDevicesTitle1, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4, 0, title1);
|
||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
||||
@ -509,7 +507,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
|
||||
deleteDevicesAsync("/api/device/", loadedDevicesTitle2).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/device/", loadedDevicesTitle2, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4, 0, title2);
|
||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
||||
@ -518,16 +516,6 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
}
|
||||
|
||||
ListenableFuture<List<ResultActions>> deleteDevicesAsync(String urlTemplate, List<Device> loadedDevicesTitle1) {
|
||||
List<ListenableFuture<ResultActions>> futures = new ArrayList<>(loadedDevicesTitle1.size());
|
||||
for (Device device : loadedDevicesTitle1) {
|
||||
futures.add(executor.submit(() ->
|
||||
doDelete(urlTemplate + device.getId().getId())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
return Futures.allAsList(futures);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindTenantDevicesByType() throws Exception {
|
||||
String title1 = "Device title 1";
|
||||
@ -593,7 +581,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
|
||||
assertThat(devicesType2).as(title2).containsExactlyInAnyOrderElementsOf(loadedDevicesType2);
|
||||
|
||||
deleteDevicesAsync("/api/device/", loadedDevicesType1).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/device/", loadedDevicesType1, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4);
|
||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
||||
@ -601,7 +589,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
|
||||
deleteDevicesAsync("/api/device/", loadedDevicesType2).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/device/", loadedDevicesType2, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4);
|
||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
||||
@ -644,7 +632,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
assertThat(devices).containsExactlyInAnyOrderElementsOf(loadedDevices);
|
||||
|
||||
log.debug("delete devices async");
|
||||
deleteDevicesAsync("/api/customer/device/", loadedDevices).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/customer/device/", loadedDevices, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
log.debug("done");
|
||||
}
|
||||
|
||||
@ -713,7 +701,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
|
||||
assertThat(devicesTitle2).as(title2).containsExactlyInAnyOrderElementsOf(loadedDevicesTitle2);
|
||||
|
||||
deleteDevicesAsync("/api/customer/device/", loadedDevicesTitle1).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/customer/device/", loadedDevicesTitle1, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4, 0, title1);
|
||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId() + "/devices?",
|
||||
@ -721,7 +709,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
|
||||
deleteDevicesAsync("/api/customer/device/", loadedDevicesTitle2).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/customer/device/", loadedDevicesTitle2, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4, 0, title2);
|
||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId() + "/devices?",
|
||||
@ -803,7 +791,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
|
||||
assertThat(devicesType2).as(title2).containsExactlyInAnyOrderElementsOf(loadedDevicesType2);
|
||||
|
||||
deleteDevicesAsync("/api/customer/device/", loadedDevicesType1).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/customer/device/", loadedDevicesType1, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4);
|
||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId() + "/devices?type={type}&",
|
||||
@ -811,7 +799,7 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
|
||||
deleteDevicesAsync("/api/customer/device/", loadedDevicesType2).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/customer/device/", loadedDevicesType2, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(4);
|
||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId() + "/devices?type={type}&",
|
||||
|
||||
@ -26,6 +26,7 @@ import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
import org.thingsboard.common.util.ThingsBoardExecutors;
|
||||
import org.thingsboard.server.common.data.Tenant;
|
||||
@ -36,19 +37,23 @@ import org.thingsboard.server.common.data.page.PageLink;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
@TestPropertySource(properties = {
|
||||
"js.evaluator=mock",
|
||||
})
|
||||
@Slf4j
|
||||
public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
|
||||
static final TypeReference<PageData<Tenant>> PAGE_DATA_TENANT_TYPE_REF = new TypeReference<>(){};
|
||||
static final TypeReference<PageData<TenantInfo>> PAGE_DATA_TENANT_INFO_TYPE_REF = new TypeReference<>(){};
|
||||
static final int TIMEOUT = 30;
|
||||
static final TypeReference<PageData<Tenant>> PAGE_DATA_TENANT_TYPE_REF = new TypeReference<>() {
|
||||
};
|
||||
static final TypeReference<PageData<TenantInfo>> PAGE_DATA_TENANT_INFO_TYPE_REF = new TypeReference<>() {
|
||||
};
|
||||
|
||||
List<ListenableFuture<ResultActions>> deleteFutures = new ArrayList<>();
|
||||
ListeningExecutorService executor;
|
||||
|
||||
@Before
|
||||
@ -176,14 +181,9 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
|
||||
assertThat(tenants).containsExactlyInAnyOrderElementsOf(loadedTenants);
|
||||
|
||||
for (Tenant tenant : loadedTenants) {
|
||||
if (!tenant.getTitle().equals(TEST_TENANT_NAME)) {
|
||||
deleteFutures.add(executor.submit(() ->
|
||||
doDelete("/api/tenant/" + tenant.getId().getId().toString())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
}
|
||||
Futures.allAsList(deleteFutures).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/tenant/", loadedTenants.stream()
|
||||
.filter((t) -> !TEST_TENANT_NAME.equals(t.getTitle()))
|
||||
.collect(Collectors.toList()), executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(17);
|
||||
pageData = doGetTypedWithPageLink("/api/tenants?", PAGE_DATA_TENANT_TYPE_REF, pageLink);
|
||||
@ -256,14 +256,8 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
assertThat(tenantsTitle2).as(title2).containsExactlyInAnyOrderElementsOf(loadedTenantsTitle2);
|
||||
log.debug("asserted");
|
||||
|
||||
deleteFutures.clear();
|
||||
for (Tenant tenant : loadedTenantsTitle1) {
|
||||
deleteFutures.add(executor.submit(() ->
|
||||
doDelete("/api/tenant/" + tenant.getId().getId().toString())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
|
||||
Futures.allAsList(deleteFutures).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/tenant/", loadedTenantsTitle1, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
log.debug("deleted '{}', size {}", title1, loadedTenantsTitle1.size());
|
||||
|
||||
pageLink = new PageLink(4, 0, title1);
|
||||
@ -273,14 +267,7 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
|
||||
log.debug("tried to search another '{}', step 4", title1);
|
||||
|
||||
deleteFutures.clear();
|
||||
for (Tenant tenant : loadedTenantsTitle2) {
|
||||
deleteFutures.add(executor.submit(() ->
|
||||
doDelete("/api/tenant/" + tenant.getId().getId().toString())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
|
||||
Futures.allAsList(deleteFutures).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/tenant/", loadedTenantsTitle2, executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
log.debug("deleted '{}', size {}", title2, loadedTenantsTitle2.size());
|
||||
|
||||
pageLink = new PageLink(4, 0, title2);
|
||||
@ -321,18 +308,24 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
|
||||
assertThat(tenants).containsExactlyInAnyOrderElementsOf(loadedTenants);
|
||||
|
||||
for (TenantInfo tenant : loadedTenants) {
|
||||
if (!tenant.getTitle().equals(TEST_TENANT_NAME)) {
|
||||
deleteFutures.add(executor.submit(() ->
|
||||
doDelete("/api/tenant/" + tenant.getId().getId().toString())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
}
|
||||
Futures.allAsList(deleteFutures).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
deleteEntitiesAsync("/api/tenant/", loadedTenants.stream()
|
||||
.filter((t) -> !TEST_TENANT_NAME.equals(t.getTitle()))
|
||||
.collect(Collectors.toList()), executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
pageLink = new PageLink(17);
|
||||
pageData = doGetTypedWithPageLink("/api/tenantInfos?", PAGE_DATA_TENANT_INFO_TYPE_REF, pageLink);
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
Assert.assertEquals(1, pageData.getData().size());
|
||||
}
|
||||
|
||||
ListenableFuture<List<ResultActions>> deleteTenantsAsync(String urlTemplate, List<Tenant> tenants) {
|
||||
List<ListenableFuture<ResultActions>> futures = new ArrayList<>(tenants.size());
|
||||
for (Tenant device : tenants) {
|
||||
futures.add(executor.submit(() ->
|
||||
doDelete(urlTemplate + device.getId().getId())
|
||||
.andExpect(status().isOk())));
|
||||
}
|
||||
return Futures.allAsList(futures);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user