mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-22 08:58:04 +01:00
Migrate from Object[] parameters to Stream<Arguments>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2013-2021 Signal Messenger, LLC
|
||||
* Copyright 2013-2022 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
@@ -8,81 +8,84 @@ package org.whispersystems.textsecuregcm.metrics;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
class OperatingSystemMemoryGaugeTest {
|
||||
|
||||
private static final String MEMINFO =
|
||||
"""
|
||||
MemTotal: 16052208 kB
|
||||
MemFree: 4568468 kB
|
||||
MemAvailable: 7702848 kB
|
||||
Buffers: 636372 kB
|
||||
Cached: 5019116 kB
|
||||
SwapCached: 6692 kB
|
||||
Active: 7746436 kB
|
||||
Inactive: 2729876 kB
|
||||
Active(anon): 5580980 kB
|
||||
Inactive(anon): 1648108 kB
|
||||
Active(file): 2165456 kB
|
||||
Inactive(file): 1081768 kB
|
||||
Unevictable: 443948 kB
|
||||
Mlocked: 4924 kB
|
||||
SwapTotal: 1003516 kB
|
||||
SwapFree: 935932 kB
|
||||
Dirty: 28308 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 5258396 kB
|
||||
Mapped: 1530740 kB
|
||||
Shmem: 2419340 kB
|
||||
KReclaimable: 229392 kB
|
||||
Slab: 408156 kB
|
||||
SReclaimable: 229392 kB
|
||||
SUnreclaim: 178764 kB
|
||||
KernelStack: 17360 kB
|
||||
PageTables: 50436 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
WritebackTmp: 0 kB
|
||||
CommitLimit: 9029620 kB
|
||||
Committed_AS: 16681884 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 41944 kB
|
||||
VmallocChunk: 0 kB
|
||||
Percpu: 4240 kB
|
||||
HardwareCorrupted: 0 kB
|
||||
AnonHugePages: 0 kB
|
||||
ShmemHugePages: 0 kB
|
||||
ShmemPmdMapped: 0 kB
|
||||
FileHugePages: 0 kB
|
||||
FilePmdMapped: 0 kB
|
||||
CmaTotal: 0 kB
|
||||
CmaFree: 0 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 7
|
||||
HugePages_Rsvd: 0
|
||||
HugePages_Surp: 0
|
||||
Hugepagesize: 2048 kB
|
||||
Hugetlb: 0 kB
|
||||
DirectMap4k: 481804 kB
|
||||
DirectMap2M: 14901248 kB
|
||||
DirectMap1G: 2097152 kB
|
||||
""";
|
||||
private static final String MEMINFO =
|
||||
"""
|
||||
MemTotal: 16052208 kB
|
||||
MemFree: 4568468 kB
|
||||
MemAvailable: 7702848 kB
|
||||
Buffers: 636372 kB
|
||||
Cached: 5019116 kB
|
||||
SwapCached: 6692 kB
|
||||
Active: 7746436 kB
|
||||
Inactive: 2729876 kB
|
||||
Active(anon): 5580980 kB
|
||||
Inactive(anon): 1648108 kB
|
||||
Active(file): 2165456 kB
|
||||
Inactive(file): 1081768 kB
|
||||
Unevictable: 443948 kB
|
||||
Mlocked: 4924 kB
|
||||
SwapTotal: 1003516 kB
|
||||
SwapFree: 935932 kB
|
||||
Dirty: 28308 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 5258396 kB
|
||||
Mapped: 1530740 kB
|
||||
Shmem: 2419340 kB
|
||||
KReclaimable: 229392 kB
|
||||
Slab: 408156 kB
|
||||
SReclaimable: 229392 kB
|
||||
SUnreclaim: 178764 kB
|
||||
KernelStack: 17360 kB
|
||||
PageTables: 50436 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
WritebackTmp: 0 kB
|
||||
CommitLimit: 9029620 kB
|
||||
Committed_AS: 16681884 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 41944 kB
|
||||
VmallocChunk: 0 kB
|
||||
Percpu: 4240 kB
|
||||
HardwareCorrupted: 0 kB
|
||||
AnonHugePages: 0 kB
|
||||
ShmemHugePages: 0 kB
|
||||
ShmemPmdMapped: 0 kB
|
||||
FileHugePages: 0 kB
|
||||
FilePmdMapped: 0 kB
|
||||
CmaTotal: 0 kB
|
||||
CmaFree: 0 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 7
|
||||
HugePages_Rsvd: 0
|
||||
HugePages_Surp: 0
|
||||
Hugepagesize: 2048 kB
|
||||
Hugetlb: 0 kB
|
||||
DirectMap4k: 481804 kB
|
||||
DirectMap2M: 14901248 kB
|
||||
DirectMap1G: 2097152 kB
|
||||
""";
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("argumentsForTestGetValue")
|
||||
public void testGetValue(final String metricName, final long expectedValue) {
|
||||
assertEquals(expectedValue, new OperatingSystemMemoryGauge(metricName).getValue(MEMINFO.lines()));
|
||||
}
|
||||
@ParameterizedTest
|
||||
@MethodSource
|
||||
void testGetValue(final String metricName, final long expectedValue) {
|
||||
assertEquals(expectedValue, new OperatingSystemMemoryGauge(metricName).getValue(MEMINFO.lines()));
|
||||
}
|
||||
|
||||
private static Object[] argumentsForTestGetValue() {
|
||||
return new Object[] {
|
||||
new Object[] { "MemTotal", 16052208L },
|
||||
new Object[] { "Active(anon)", 5580980L },
|
||||
new Object[] { "Committed_AS", 16681884L },
|
||||
new Object[] { "HugePages_Free", 7L },
|
||||
new Object[] { "NonsenseMetric", 0L }
|
||||
};
|
||||
}
|
||||
@SuppressWarnings("unused")
|
||||
private static Stream<Arguments> testGetValue() {
|
||||
return Stream.of(
|
||||
Arguments.of("MemTotal", 16052208L),
|
||||
Arguments.of("Active(anon)", 5580980L),
|
||||
Arguments.of("Committed_AS", 16681884L),
|
||||
Arguments.of("HugePages_Free", 7L),
|
||||
Arguments.of("NonsenseMetric", 0L)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2013-2020 Signal Messenger, LLC
|
||||
* Copyright 2013-2022 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
@@ -11,81 +11,85 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import io.micrometer.core.instrument.Tag;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
class UserAgentTagUtilTest {
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("argumentsForTestGetUserAgentTags")
|
||||
public void testGetUserAgentTags(final String userAgent, final List<Tag> expectedTags) {
|
||||
assertEquals(new HashSet<>(expectedTags),
|
||||
new HashSet<>(UserAgentTagUtil.getUserAgentTags(userAgent)));
|
||||
@ParameterizedTest
|
||||
@MethodSource
|
||||
public void testGetUserAgentTags(final String userAgent, final List<Tag> expectedTags) {
|
||||
assertEquals(new HashSet<>(expectedTags),
|
||||
new HashSet<>(UserAgentTagUtil.getUserAgentTags(userAgent)));
|
||||
}
|
||||
|
||||
private static List<Tag> platformVersionTags(String platform, String version) {
|
||||
return List.of(Tag.of(UserAgentTagUtil.PLATFORM_TAG, platform), Tag.of(UserAgentTagUtil.VERSION_TAG, version));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static Stream<Arguments> testGetUserAgentTags() {
|
||||
return Stream.of(
|
||||
Arguments.of("This is obviously not a reasonable User-Agent string.", UserAgentTagUtil.UNRECOGNIZED_TAGS),
|
||||
Arguments.of(null, UserAgentTagUtil.UNRECOGNIZED_TAGS),
|
||||
Arguments.of("Signal-Android 4.53.7 (Android 8.1)", platformVersionTags("android", "4.53.7")),
|
||||
Arguments.of("Signal Desktop 1.2.3", platformVersionTags("desktop", "1.2.3")),
|
||||
Arguments.of("Signal/3.9.0 (iPhone; iOS 12.2; Scale/3.00)", platformVersionTags("ios", "3.9.0")),
|
||||
Arguments.of("Signal-Android 1.2.3 (Android 8.1)", UserAgentTagUtil.UNRECOGNIZED_TAGS),
|
||||
Arguments.of("Signal Desktop 3.9.0", platformVersionTags("desktop", "3.9.0")),
|
||||
Arguments.of("Signal/4.53.7 (iPhone; iOS 12.2; Scale/3.00)", platformVersionTags("ios", "4.53.7")),
|
||||
Arguments.of("Signal-Android 4.68.3 (Android 9)", platformVersionTags("android", "4.68.3")),
|
||||
Arguments.of("Signal-Android 1.2.3 (Android 4.3)", UserAgentTagUtil.UNRECOGNIZED_TAGS),
|
||||
Arguments.of("Signal-Android 4.68.3.0-bobsbootlegclient", UserAgentTagUtil.UNRECOGNIZED_TAGS),
|
||||
Arguments.of("Signal Desktop 1.22.45-foo-0", UserAgentTagUtil.UNRECOGNIZED_TAGS),
|
||||
Arguments.of("Signal Desktop 1.34.5-beta.1-fakeclientemporium", UserAgentTagUtil.UNRECOGNIZED_TAGS),
|
||||
Arguments.of("Signal Desktop 1.32.0-beta.3", UserAgentTagUtil.UNRECOGNIZED_TAGS)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetUserAgentTagsFlooded() {
|
||||
for (int i = 0; i < UserAgentTagUtil.MAX_VERSIONS; i++) {
|
||||
UserAgentTagUtil.getUserAgentTags(String.format("Signal-Android 4.0.%d (Android 8.1)", i));
|
||||
}
|
||||
|
||||
private static List<Tag> platformVersionTags(String platform, String version) {
|
||||
return List.of(Tag.of(UserAgentTagUtil.PLATFORM_TAG, platform), Tag.of(UserAgentTagUtil.VERSION_TAG, version));
|
||||
}
|
||||
assertEquals(UserAgentTagUtil.OVERFLOW_TAGS,
|
||||
UserAgentTagUtil.getUserAgentTags("Signal-Android 4.1.0 (Android 8.1)"));
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static Object[] argumentsForTestGetUserAgentTags() {
|
||||
return new Object[] {
|
||||
new Object[] { "This is obviously not a reasonable User-Agent string.", UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
new Object[] { null, UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
new Object[] { "Signal-Android 4.53.7 (Android 8.1)", platformVersionTags("android", "4.53.7") },
|
||||
new Object[] { "Signal Desktop 1.2.3", platformVersionTags("desktop", "1.2.3") },
|
||||
new Object[] { "Signal/3.9.0 (iPhone; iOS 12.2; Scale/3.00)", platformVersionTags("ios", "3.9.0") },
|
||||
new Object[] { "Signal-Android 1.2.3 (Android 8.1)", UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
new Object[] { "Signal Desktop 3.9.0", platformVersionTags("desktop", "3.9.0") },
|
||||
new Object[] { "Signal/4.53.7 (iPhone; iOS 12.2; Scale/3.00)", platformVersionTags("ios", "4.53.7") },
|
||||
new Object[] { "Signal-Android 4.68.3 (Android 9)", platformVersionTags("android", "4.68.3") },
|
||||
new Object[] { "Signal-Android 1.2.3 (Android 4.3)", UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
new Object[] { "Signal-Android 4.68.3.0-bobsbootlegclient", UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
new Object[] { "Signal Desktop 1.22.45-foo-0", UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
new Object[] { "Signal Desktop 1.34.5-beta.1-fakeclientemporium", UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
new Object[] { "Signal Desktop 1.32.0-beta.3", UserAgentTagUtil.UNRECOGNIZED_TAGS },
|
||||
};
|
||||
}
|
||||
final List<Tag> tags = UserAgentTagUtil.getUserAgentTags("Signal-Android 4.0.0 (Android 8.1)");
|
||||
|
||||
@Test
|
||||
void testGetUserAgentTagsFlooded() {
|
||||
for (int i = 0; i < UserAgentTagUtil.MAX_VERSIONS; i++) {
|
||||
UserAgentTagUtil.getUserAgentTags(String.format("Signal-Android 4.0.%d (Android 8.1)", i));
|
||||
}
|
||||
assertEquals(2, tags.size());
|
||||
assertTrue(tags.contains(Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")));
|
||||
assertTrue(tags.contains(Tag.of(UserAgentTagUtil.VERSION_TAG, "4.0.0")));
|
||||
}
|
||||
|
||||
assertEquals(UserAgentTagUtil.OVERFLOW_TAGS,
|
||||
UserAgentTagUtil.getUserAgentTags("Signal-Android 4.1.0 (Android 8.1)"));
|
||||
@ParameterizedTest
|
||||
@MethodSource("argumentsForTestGetPlatformTag")
|
||||
public void testGetPlatformTag(final String userAgent, final Tag expectedTag) {
|
||||
assertEquals(expectedTag, UserAgentTagUtil.getPlatformTag(userAgent));
|
||||
}
|
||||
|
||||
final List<Tag> tags = UserAgentTagUtil.getUserAgentTags("Signal-Android 4.0.0 (Android 8.1)");
|
||||
|
||||
assertEquals(2, tags.size());
|
||||
assertTrue(tags.contains(Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")));
|
||||
assertTrue(tags.contains(Tag.of(UserAgentTagUtil.VERSION_TAG, "4.0.0")));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("argumentsForTestGetPlatformTag")
|
||||
public void testGetPlatformTag(final String userAgent, final Tag expectedTag) {
|
||||
assertEquals(expectedTag, UserAgentTagUtil.getPlatformTag(userAgent));
|
||||
}
|
||||
|
||||
private static Object[] argumentsForTestGetPlatformTag() {
|
||||
return new Object[] {
|
||||
new Object[] { "This is obviously not a reasonable User-Agent string.", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "unrecognized") },
|
||||
new Object[] { null, Tag.of(UserAgentTagUtil.PLATFORM_TAG, "unrecognized") },
|
||||
new Object[] { "Signal-Android 4.53.7 (Android 8.1)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal Desktop 1.2.3", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal/3.9.0 (iPhone; iOS 12.2; Scale/3.00)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "ios") },
|
||||
new Object[] { "Signal-Android 1.2.3 (Android 8.1)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal Desktop 3.9.0", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal/4.53.7 (iPhone; iOS 12.2; Scale/3.00)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "ios") },
|
||||
new Object[] { "Signal-Android 4.68.3 (Android 9)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal-Android 1.2.3 (Android 4.3)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal-Android 4.68.3.0-bobsbootlegclient", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal Desktop 1.22.45-foo-0", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal Desktop 1.34.5-beta.1-fakeclientemporium", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal Desktop 1.32.0-beta.3", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
};
|
||||
}
|
||||
private static Stream<Arguments> argumentsForTestGetPlatformTag() {
|
||||
return Stream.of(
|
||||
Arguments.of("This is obviously not a reasonable User-Agent string.",
|
||||
Tag.of(UserAgentTagUtil.PLATFORM_TAG, "unrecognized")),
|
||||
Arguments.of(null, Tag.of(UserAgentTagUtil.PLATFORM_TAG, "unrecognized")),
|
||||
Arguments.of("Signal-Android 4.53.7 (Android 8.1)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")),
|
||||
Arguments.of("Signal Desktop 1.2.3", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop")),
|
||||
Arguments.of("Signal/3.9.0 (iPhone; iOS 12.2; Scale/3.00)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "ios")),
|
||||
Arguments.of("Signal-Android 1.2.3 (Android 8.1)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")),
|
||||
Arguments.of("Signal Desktop 3.9.0", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop")),
|
||||
Arguments.of("Signal/4.53.7 (iPhone; iOS 12.2; Scale/3.00)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "ios")),
|
||||
Arguments.of("Signal-Android 4.68.3 (Android 9)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")),
|
||||
Arguments.of("Signal-Android 1.2.3 (Android 4.3)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")),
|
||||
Arguments.of("Signal-Android 4.68.3.0-bobsbootlegclient", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")),
|
||||
Arguments.of("Signal Desktop 1.22.45-foo-0", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop")),
|
||||
Arguments.of("Signal Desktop 1.34.5-beta.1-fakeclientemporium",
|
||||
Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop")),
|
||||
Arguments.of("Signal Desktop 1.32.0-beta.3", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop"))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user