feat: detect an agent's public IPv4 and IPv6 addresses automatically, manual values still win [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful
ci/woodpecker/push/main-amd64-build Pipeline was successful
This commit is contained in:
1 parent
9966ea5d63
commit
f03988d68b
26 files changed
+517
-33
No files matched your search
@@ -0,0 +1,36 @@
|
||||
using MoShiro.Measurement;
|
||||
|
||||
namespace MoShiro.Measurement.Tests;
|
||||
|
||||
public sealed class LocalAddressesTests
|
||||
{
|
||||
[Fact]
|
||||
public void Linux_TemporaryTentativeDeprecatedAndFailedAddressesAreNotUsable()
|
||||
{
|
||||
const string text =
|
||||
"2409c0d0000000000000000000000001 02 40 00 80 eth0\n" + // 稳定地址:可用
|
||||
"2409c0d0000000000000000000000002 02 40 00 01 eth0\n" + // 临时(隐私)地址
|
||||
"2409c0d0000000000000000000000003 02 40 00 40 eth0\n" + // tentative
|
||||
"2409c0d0000000000000000000000004 02 40 00 20 eth0\n" + // deprecated
|
||||
"2409c0d0000000000000000000000005 02 40 00 08 eth0\n"; // dad 失败
|
||||
HashSet<string> unusable = LocalAddresses.UnusableIpv6(text);
|
||||
Assert.DoesNotContain("2409:c0d0::1", unusable);
|
||||
Assert.Contains("2409:c0d0::2", unusable);
|
||||
Assert.Contains("2409:c0d0::3", unusable);
|
||||
Assert.Contains("2409:c0d0::4", unusable);
|
||||
Assert.Contains("2409:c0d0::5", unusable);
|
||||
Assert.Empty(LocalAddresses.UnusableIpv6(null));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Sample_NeverReturnsLoopbackPrivateOrLinkLocalAddresses()
|
||||
{
|
||||
foreach (string text in LocalAddresses.Sample())
|
||||
{
|
||||
var address = System.Net.IPAddress.Parse(text);
|
||||
Assert.True(address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork
|
||||
? MoShiro.Protocol.PublicAddress.IsPublicIpv4(address)
|
||||
: MoShiro.Protocol.PublicAddress.IsGlobalIpv6(address));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user