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

View File

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

View File

@@ -1,15 +1,20 @@
package org.briarproject.bramble.mailbox; package org.briarproject.bramble.mailbox;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.IntSupplier;
import static java.lang.System.currentTimeMillis; 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.MailboxTestUtils.createHttpClientProvider;
import static org.briarproject.bramble.mailbox.TestModularMailboxModule.urlConverter;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
class MailboxIntegrationTestUtils { 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); return new MailboxApiImpl(createHttpClientProvider(), urlConverter);
} }

View File

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

View File

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