Skip to content

Commit f254244

Browse files
LinuxApplicationLayerExperiment adjustments. (#1595)
1 parent 4c6c5b3 commit f254244

File tree

2 files changed

+90
-2
lines changed

2 files changed

+90
-2
lines changed

src/Microsoft.ComponentDetection.Orchestrator/Experiments/Configs/LinuxApplicationLayerExperiment.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace Microsoft.ComponentDetection.Orchestrator.Experiments.Configs;
33
using Microsoft.ComponentDetection.Contracts;
44
using Microsoft.ComponentDetection.Detectors.Linux;
55
using Microsoft.ComponentDetection.Detectors.Npm;
6+
using Microsoft.ComponentDetection.Detectors.NuGet;
67
using Microsoft.ComponentDetection.Detectors.Pip;
78

89
/// <summary>
@@ -22,12 +23,27 @@ public bool IsInControlGroup(IComponentDetector componentDetector) =>
2223
is (LinuxContainerDetector and not LinuxApplicationLayerDetector)
2324
or NpmComponentDetector
2425
or NpmLockfileDetectorBase
25-
or PipReportComponentDetector;
26+
or PipReportComponentDetector
27+
or NuGetComponentDetector
28+
or NuGetProjectModelProjectCentricComponentDetector
29+
or NuGetPackagesConfigDetector;
2630

2731
/// <inheritdoc />
2832
public bool IsInExperimentGroup(IComponentDetector componentDetector) =>
2933
componentDetector is LinuxApplicationLayerDetector;
3034

3135
/// <inheritdoc />
32-
public bool ShouldRecord(IComponentDetector componentDetector, int numComponents) => true;
36+
public bool ShouldRecord(IComponentDetector componentDetector, int numComponents)
37+
{
38+
// Only record telemetry if the experiment group detector (LinuxApplicationLayerDetector)
39+
// actually found components.
40+
if (componentDetector is LinuxApplicationLayerDetector)
41+
{
42+
return numComponents > 0;
43+
}
44+
45+
// For control group detectors, record if the experiment group found anything
46+
// This will be determined by the orchestrator based on whether the experiment group had components
47+
return true;
48+
}
3349
}

test/Microsoft.ComponentDetection.Orchestrator.Tests/Experiments/LinuxApplicationLayerExperimentTests.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ namespace Microsoft.ComponentDetection.Orchestrator.Tests.Experiments;
44
using AwesomeAssertions;
55
using Microsoft.ComponentDetection.Detectors.Linux;
66
using Microsoft.ComponentDetection.Detectors.Npm;
7+
using Microsoft.ComponentDetection.Detectors.NuGet;
78
using Microsoft.ComponentDetection.Detectors.Pip;
89
using Microsoft.ComponentDetection.Orchestrator.Experiments.Configs;
910
using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -41,6 +42,27 @@ public void IsInControlGroup_NpmComponentDetectorWithRoots_ReturnsTrue()
4142
this.experiment.IsInControlGroup(npmDetectorWithRoots).Should().BeTrue();
4243
}
4344

45+
[TestMethod]
46+
public void IsInControlGroup_NuGetComponentDetector_ReturnsTrue()
47+
{
48+
var nuGetDetector = new NuGetComponentDetector(null, null, null);
49+
this.experiment.IsInControlGroup(nuGetDetector).Should().BeTrue();
50+
}
51+
52+
[TestMethod]
53+
public void IsInControlGroup_NuGetProjectModelProjectCentricComponentDetector_ReturnsTrue()
54+
{
55+
var nuGetDetector = new NuGetProjectModelProjectCentricComponentDetector(null, null, null, null);
56+
this.experiment.IsInControlGroup(nuGetDetector).Should().BeTrue();
57+
}
58+
59+
[TestMethod]
60+
public void IsInControlGroup_NuGetPackagesConfigDetector_ReturnsTrue()
61+
{
62+
var nuGetPackagesConfigDetector = new NuGetPackagesConfigDetector(null, null, null);
63+
this.experiment.IsInControlGroup(nuGetPackagesConfigDetector).Should().BeTrue();
64+
}
65+
4466
[TestMethod]
4567
public void IsInControlGroup_PipReportComponentDetector_ReturnsTrue()
4668
{
@@ -118,4 +140,54 @@ public void IsInExperimentGroup_PipReportComponentDetector_ReturnsFalse()
118140

119141
this.experiment.IsInExperimentGroup(pipDetector).Should().BeFalse();
120142
}
143+
144+
[TestMethod]
145+
public void IsInExperimentGroup_NuGetComponentDetector_ReturnsFalse()
146+
{
147+
var nuGetDetector = new NuGetComponentDetector(null, null, null);
148+
this.experiment.IsInExperimentGroup(nuGetDetector).Should().BeFalse();
149+
}
150+
151+
[TestMethod]
152+
public void IsInExperimentGroup_NuGetProjectModelProjectCentricComponentDetector_ReturnsFalse()
153+
{
154+
var nuGetDetector = new NuGetProjectModelProjectCentricComponentDetector(null, null, null, null);
155+
this.experiment.IsInExperimentGroup(nuGetDetector).Should().BeFalse();
156+
}
157+
158+
[TestMethod]
159+
public void ShouldRecord_ExperimentGroup_ReturnsTrue_WhenNumComponentsGreaterThanZero()
160+
{
161+
var experimentalDetector = new LinuxApplicationLayerDetector(null, null, null);
162+
this.experiment.ShouldRecord(experimentalDetector, 1).Should().BeTrue();
163+
}
164+
165+
[TestMethod]
166+
public void ShouldRecord_ExperimentGroup_ReturnsFalse_WhenNumComponentsIsZero()
167+
{
168+
var experimentalDetector = new LinuxApplicationLayerDetector(null, null, null);
169+
this.experiment.ShouldRecord(experimentalDetector, 0).Should().BeFalse();
170+
}
171+
172+
[TestMethod]
173+
public void ShouldRecord_ControlGroup_AlwaysReturnsTrue()
174+
{
175+
var linuxDetector = new LinuxContainerDetector(null, null, null);
176+
this.experiment.ShouldRecord(linuxDetector, 0).Should().BeTrue();
177+
178+
var npmDetector = new NpmComponentDetector(null, null, null);
179+
this.experiment.ShouldRecord(npmDetector, 0).Should().BeTrue();
180+
181+
var pipDetector = new PipReportComponentDetector(null, null, null, null, null, null, null, null, null);
182+
this.experiment.ShouldRecord(pipDetector, 0).Should().BeTrue();
183+
184+
var nuGetDetector = new NuGetComponentDetector(null, null, null);
185+
this.experiment.ShouldRecord(nuGetDetector, 0).Should().BeTrue();
186+
187+
var nuGetProjectCentricDetector = new NuGetProjectModelProjectCentricComponentDetector(null, null, null, null);
188+
this.experiment.ShouldRecord(nuGetProjectCentricDetector, 0).Should().BeTrue();
189+
190+
var nuGetPackagesConfigDetector = new NuGetPackagesConfigDetector(null, null, null);
191+
this.experiment.ShouldRecord(nuGetPackagesConfigDetector, 0).Should().BeTrue();
192+
}
121193
}

0 commit comments

Comments
 (0)