69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
using System.Collections.Immutable;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using StellaOps.ReachGraph.Schema;
|
|
|
|
namespace StellaOps.ReachGraph.Cache.Tests;
|
|
|
|
internal static class ReachGraphValkeyCacheTestData
|
|
{
|
|
public static ReachGraphMinimal CreateGraph(string digest)
|
|
{
|
|
return new ReachGraphMinimal
|
|
{
|
|
Artifact = new ReachGraphArtifact(
|
|
"svc.payments",
|
|
digest,
|
|
ImmutableArray.Create("linux/amd64")),
|
|
Scope = new ReachGraphScope(
|
|
ImmutableArray.Create("/app/bin/svc"),
|
|
ImmutableArray.Create("prod")),
|
|
Nodes = ImmutableArray.Create(new ReachGraphNode
|
|
{
|
|
Id = "node-1",
|
|
Kind = ReachGraphNodeKind.Package,
|
|
Ref = "pkg:npm/lodash@4.17.21",
|
|
IsEntrypoint = true
|
|
}),
|
|
Edges = ImmutableArray.Create(new ReachGraphEdge
|
|
{
|
|
From = "node-1",
|
|
To = "node-1",
|
|
Why = new EdgeExplanation
|
|
{
|
|
Type = EdgeExplanationType.Import,
|
|
Confidence = 1.0
|
|
}
|
|
}),
|
|
Provenance = new ReachGraphProvenance
|
|
{
|
|
Inputs = new ReachGraphInputs
|
|
{
|
|
Sbom = "sha256:sbom"
|
|
},
|
|
ComputedAt = new DateTimeOffset(2026, 1, 2, 3, 4, 5, TimeSpan.Zero),
|
|
Analyzer = new ReachGraphAnalyzer("reach-graph", "1.0.0", "sha256:tool")
|
|
}
|
|
};
|
|
}
|
|
|
|
public static byte[] Compress(byte[] data)
|
|
{
|
|
using var output = new MemoryStream();
|
|
using (var gzip = new GZipStream(output, CompressionLevel.Fastest, leaveOpen: true))
|
|
{
|
|
gzip.Write(data);
|
|
}
|
|
return output.ToArray();
|
|
}
|
|
|
|
public static byte[] Decompress(byte[] compressed)
|
|
{
|
|
using var input = new MemoryStream(compressed);
|
|
using var gzip = new GZipStream(input, CompressionMode.Decompress);
|
|
using var output = new MemoryStream();
|
|
gzip.CopyTo(output);
|
|
return output.ToArray();
|
|
}
|
|
}
|