Skip to content

Commit ab7ed43

Browse files
committed
Improve e2e test traffic assertion
1 parent d30fe08 commit ab7ed43

File tree

3 files changed

+50
-40
lines changed

3 files changed

+50
-40
lines changed

android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt

+14-7
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ import net.mullvad.mullvadvpn.test.common.page.on
1515
import net.mullvad.mullvadvpn.test.common.rule.ForgetAllVpnAppsInSettingsTestRule
1616
import net.mullvad.mullvadvpn.test.e2e.annotations.HasDependencyOnLocalAPI
1717
import net.mullvad.mullvadvpn.test.e2e.misc.AccountTestRule
18-
import net.mullvad.mullvadvpn.test.e2e.misc.LeakCheck
18+
import net.mullvad.mullvadvpn.test.e2e.misc.NetworkTrafficChecker
1919
import net.mullvad.mullvadvpn.test.e2e.misc.NoTrafficToHostRule
20+
import net.mullvad.mullvadvpn.test.e2e.misc.OnlyTrafficToHostRule
2021
import net.mullvad.mullvadvpn.test.e2e.misc.TrafficGenerator
2122
import net.mullvad.mullvadvpn.test.e2e.router.packetCapture.PacketCapture
2223
import net.mullvad.mullvadvpn.test.e2e.router.packetCapture.PacketCaptureResult
@@ -96,8 +97,10 @@ class LeakTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
9697
val timestamp = System.currentTimeMillis()
9798
Attachment.saveAttachment("capture-testNegativeLeak-$timestamp.pcap", capturedPcap)
9899

99-
val leakRules = listOf(NoTrafficToHostRule(targetIpAddress))
100-
LeakCheck.assertNoLeaks(capturedStreams, leakRules)
100+
NetworkTrafficChecker.checkTrafficAgainstRules(
101+
capturedStreams,
102+
OnlyTrafficToHostRule(targetIpAddress)
103+
)
101104
}
102105

103106
@Test
@@ -156,8 +159,10 @@ class LeakTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
156159
val timestamp = System.currentTimeMillis()
157160
Attachment.saveAttachment("capture-testShouldHaveLeak-$timestamp.pcap", capturedPcap)
158161

159-
val leakRules = listOf(NoTrafficToHostRule(targetIpAddress))
160-
LeakCheck.assertLeaks(capturedStreams, leakRules)
162+
NetworkTrafficChecker.checkTrafficAgainstRules(
163+
capturedStreams,
164+
NoTrafficToHostRule(targetIpAddress)
165+
)
161166
}
162167

163168
@Test
@@ -212,8 +217,10 @@ class LeakTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
212217
capturedPcap,
213218
)
214219

215-
val leakRules = listOf(NoTrafficToHostRule(targetIpAddress))
216-
LeakCheck.assertLeaks(capturedStreams, leakRules)
220+
NetworkTrafficChecker.checkTrafficAgainstRules(
221+
capturedStreams,
222+
OnlyTrafficToHostRule(targetIpAddress)
223+
)
217224
}
218225

219226
private fun disableObfuscation() {

android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/LeakCheck.kt

-33
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package net.mullvad.mullvadvpn.test.e2e.misc
2+
3+
import net.mullvad.mullvadvpn.test.e2e.router.packetCapture.Stream
4+
import org.junit.jupiter.api.Assertions.assertEquals
5+
import org.junit.jupiter.api.Assertions.assertNotEquals
6+
import org.junit.jupiter.api.Assertions.assertTrue
7+
8+
object NetworkTrafficChecker {
9+
fun checkTrafficAgainstRules(streams: List<Stream>, vararg rules: TrafficRule) {
10+
// Assert that there are streams to be analyzed. Stream objects are guaranteed to contain
11+
// packets when initialized.
12+
assertTrue(streams.isNotEmpty(), "List of streams is empty.")
13+
14+
for (rule in rules) {
15+
rule.assertTraffic(streams)
16+
}
17+
}
18+
}
19+
20+
interface TrafficRule {
21+
fun assertTraffic(streams: List<Stream>)
22+
}
23+
24+
class OnlyTrafficToHostRule(private val host: String) : TrafficRule {
25+
override fun assertTraffic(streams: List<Stream>) {
26+
// TODO: Change to proper array/list assertion.
27+
streams.forEach { assertEquals(host, it.destinationHost.ipAddress) }
28+
}
29+
}
30+
31+
class NoTrafficToHostRule(private val host: String) : TrafficRule {
32+
override fun assertTraffic(streams: List<Stream>) {
33+
// TODO: Change to proper array/list assertion.
34+
streams.forEach { assertNotEquals(host, it.destinationHost.ipAddress) }
35+
}
36+
}

0 commit comments

Comments
 (0)