Fix integration tests by using dynamic webserver port of mailbox

This commit is contained in:
Torsten Grote
2023-03-09 12:16:59 -03:00
parent 2657e2bc08
commit cae9efb4bf
6 changed files with 33 additions and 15 deletions

View File

@@ -29,6 +29,7 @@ import org.junit.Before;
import java.io.File;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.function.IntSupplier;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.briarproject.bramble.api.mailbox.MailboxAuthToken.fromString;
@@ -44,7 +45,7 @@ import static org.junit.Assert.fail;
abstract class AbstractMailboxIntegrationTest
extends BrambleIntegrationTest<MailboxIntegrationTestComponent> {
static final String URL_BASE = "http://127.0.0.1:8000";
static final String URL_BASE = "http://127.0.0.1";
AbstractMailboxIntegrationTest() {
TestLogFormatter.use();
@@ -58,15 +59,16 @@ abstract class AbstractMailboxIntegrationTest
MailboxIntegrationTestComponent c1, c2;
Contact contact1From2, contact2From1;
TestMailbox mailbox;
MailboxApi api = createMailboxApi();
MailboxApi api;
@Before
@Override
public void setUp() throws Exception {
super.setUp();
c1 = startTestComponent(dir1, "Alice");
c2 = startTestComponent(dir2, "Bob");
mailbox = new TestMailbox(new File(testDir, "mailbox"));
c1 = startTestComponent(dir1, "Alice", () -> mailbox.getPort());
c2 = startTestComponent(dir2, "Bob", () -> mailbox.getPort());
api = createMailboxApi(() -> mailbox.getPort());
mailbox.startLifecycle();
}
@@ -82,16 +84,20 @@ abstract class AbstractMailboxIntegrationTest
}
private MailboxIntegrationTestComponent startTestComponent(
File databaseDir, String name) throws Exception {
File databaseDir, String name, IntSupplier portSupplier)
throws Exception {
TestThreadFactoryModule threadFactoryModule =
new TestThreadFactoryModule(name);
TestDatabaseConfigModule dbModule =
new TestDatabaseConfigModule(databaseDir);
TestModularMailboxModule mailboxModule =
new TestModularMailboxModule(portSupplier);
MailboxIntegrationTestComponent component =
DaggerMailboxIntegrationTestComponent
.builder()
.testThreadFactoryModule(threadFactoryModule)
.testDatabaseConfigModule(dbModule)
.testModularMailboxModule(mailboxModule)
.build();
injectEagerSingletons(component);

View File

@@ -49,7 +49,7 @@ public class MailboxApiIntegrationTest extends BrambleTestCase {
private TestMailbox mailbox;
private MailboxAuthToken setupToken;
private final MailboxApi api = createMailboxApi();
private MailboxApi api;
private MailboxProperties ownerProperties;
@@ -57,6 +57,7 @@ public class MailboxApiIntegrationTest extends BrambleTestCase {
public void setUp()
throws IOException, ApiException, InvalidMailboxIdException {
mailbox = new TestMailbox(dataDirectory.getRoot());
api = createMailboxApi(() -> mailbox.getPort());
mailbox.startLifecycle();
setupToken = MailboxAuthToken.fromString(mailbox.getSetupToken());

View File

@@ -1,15 +1,20 @@
package org.briarproject.bramble.mailbox;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.IntSupplier;
import static java.lang.System.currentTimeMillis;
import static org.briarproject.bramble.mailbox.AbstractMailboxIntegrationTest.URL_BASE;
import static org.briarproject.bramble.mailbox.MailboxTestUtils.createHttpClientProvider;
import static org.briarproject.bramble.mailbox.TestModularMailboxModule.urlConverter;
import static org.junit.Assert.fail;
class MailboxIntegrationTestUtils {
static MailboxApi createMailboxApi() {
static MailboxApi createMailboxApi(IntSupplier portSupplier) {
UrlConverter urlConverter = onion -> {
int port = portSupplier.getAsInt(); //only access when needed
return URL_BASE + ":" + port;
};
return new MailboxApiImpl(createHttpClientProvider(), urlConverter);
}

View File

@@ -15,7 +15,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static org.briarproject.bramble.mailbox.MailboxIntegrationTestUtils.createMailboxApi;
import static org.briarproject.bramble.mailbox.MailboxIntegrationTestUtils.retryUntilSuccessOrTimeout;
import static org.briarproject.bramble.test.TestUtils.getSecretKey;
import static org.junit.Assert.assertEquals;
@@ -23,8 +22,6 @@ import static org.junit.Assert.assertEquals;
public class OwnMailboxContactListWorkerIntegrationTest
extends AbstractMailboxIntegrationTest {
private final MailboxApi api = createMailboxApi();
private MailboxProperties ownerProperties;
private LocalAuthor localAuthor1;

View File

@@ -2,6 +2,8 @@ package org.briarproject.bramble.mailbox;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.function.IntSupplier;
import dagger.Module;
import dagger.Provides;
@@ -11,15 +13,22 @@ import static org.briarproject.bramble.mailbox.AbstractMailboxIntegrationTest.UR
@NotNullByDefault
class TestModularMailboxModule {
private final IntSupplier portSupplier;
TestModularMailboxModule(IntSupplier portSupplier) {
this.portSupplier = portSupplier;
}
@Provides
MailboxConfig provideMailboxConfig(TestMailboxConfigImpl mailboxConfig) {
return mailboxConfig;
}
static UrlConverter urlConverter = onion -> URL_BASE;
@Provides
UrlConverter provideUrlConverter() {
return urlConverter;
return onion -> {
int port = portSupplier.getAsInt();
return URL_BASE + ":" + port;
};
}
}