Skip to content

Commit bc605d6

Browse files
Merge pull request #239 from microsoft/main
Fork Sync: Update from parent repository
2 parents 4bca252 + f00248f commit bc605d6

File tree

4 files changed

+128
-22
lines changed

4 files changed

+128
-22
lines changed

src/ApiService/ApiService/onefuzzlib/notifications/JinjaTemplateAdapter.cs

Lines changed: 100 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -74,48 +74,126 @@ public static async Async.Task<TemplateValidationResponse> ValidateScribanTempla
7474
var project = "some project";
7575
var jobName = "job name";
7676
var buildName = "build name";
77+
var account = "some account";
78+
var container = Container.Parse("container");
79+
var asanLog = "asan log";
80+
var scarinessScore = 5;
81+
var scarinessDescription = "super scary";
82+
var minimizedStack = new List<string> { "minimized stack frame 0", "minimized stack frame 1" };
83+
var minimizedStackSha = "abc123";
84+
var minimizedStackFunctionNames = new List<string> { "minimized stack function 0", "minimized stack function 1" };
85+
var minimizedStackFunctionNamesSha = "abc123";
86+
var minimizedStackFunctionLines = new List<string> { "minimized stack function line 0", "minimized stack function line 1" };
87+
var minimizedStackFunctionLinesSha = "abc123";
7788
var reportContainer = templateRenderContext?.ReportContainer ?? Container.Parse("example-container-name");
7889
var reportFileName = templateRenderContext?.ReportFilename ?? "example file name";
7990
var reproCmd = templateRenderContext?.ReproCmd ?? "onefuzz command to create a repro";
91+
var toolName = "tool name";
92+
var toolVersion = "tool version";
93+
var onefuzzVersion = "onefuzz version";
8094
var report = templateRenderContext?.Report ?? new Report(
8195
inputUrl.ToString(),
82-
null,
96+
new BlobRef(account, container, reportFileName),
8397
executable,
8498
crashType,
8599
crashSite,
86100
callStack,
87101
callStackSha,
88102
inputSha,
89-
null,
103+
asanLog,
90104
taskId,
91105
jobId,
92-
null,
93-
null,
94-
null,
95-
null,
96-
null,
97-
null,
98-
null,
99-
null,
100-
null,
101-
null,
102-
null,
103-
null
106+
scarinessScore,
107+
scarinessDescription,
108+
minimizedStack,
109+
minimizedStackSha,
110+
minimizedStackFunctionNames,
111+
minimizedStackFunctionNamesSha,
112+
minimizedStackFunctionLines,
113+
minimizedStackFunctionLinesSha,
114+
toolName,
115+
toolVersion,
116+
onefuzzVersion,
117+
reportUrl
104118
);
105119

120+
var preReqTasks = new List<Guid> { Guid.NewGuid(), Guid.NewGuid() };
121+
var targetExe = "target exe";
122+
var targetEnv = new Dictionary<string, string> { { "key", "value" } };
123+
var targetOptions = new List<string> { "option 1", "option 2" };
124+
var supervisorExe = "supervisor exe";
106125
var task = new Task(
107126
jobId,
108127
taskId,
109128
taskState,
110129
os,
111130
templateRenderContext?.Task ?? new TaskConfig(
112131
jobId,
113-
null,
132+
preReqTasks,
114133
new TaskDetails(
115134
taskType,
116-
duration
117-
)
118-
)
135+
duration,
136+
targetExe,
137+
targetEnv,
138+
targetOptions,
139+
1,
140+
true,
141+
true,
142+
true,
143+
1,
144+
true,
145+
true,
146+
true,
147+
supervisorExe,
148+
targetEnv,
149+
targetOptions,
150+
"supervisor input market",
151+
"generator exe",
152+
targetEnv,
153+
targetOptions,
154+
"analyzer exe",
155+
targetEnv,
156+
targetOptions,
157+
ContainerType.Analysis,
158+
"stats file",
159+
StatsFormat.AFL,
160+
true,
161+
1,
162+
1,
163+
true,
164+
targetOptions,
165+
1,
166+
"coverage filter",
167+
"module allow list",
168+
"source allow list",
169+
"target assembly",
170+
"target class",
171+
"target method"
172+
),
173+
new TaskVm(
174+
Region.Parse("westus3"),
175+
"some sku",
176+
"some image",
177+
true,
178+
1,
179+
true
180+
),
181+
new TaskPool(
182+
1,
183+
PoolName.Parse("poolname")
184+
),
185+
new List<TaskContainers> {
186+
new TaskContainers(ContainerType.Inputs, Container.Parse("inputs")),
187+
},
188+
targetEnv,
189+
new List<TaskDebugFlag> { TaskDebugFlag.KeepNodeOnCompletion },
190+
true
191+
),
192+
new Error(ErrorCode.UNABLE_TO_FIND, new string[] { "some error message" }),
193+
new Authentication("password", "public key", "private key"),
194+
DateTimeOffset.UtcNow,
195+
DateTimeOffset.UtcNow,
196+
new UserInfo(Guid.NewGuid(), Guid.NewGuid(), "upn")
119197
);
120198

121199
var job = new Job(
@@ -126,8 +204,10 @@ public static async Async.Task<TemplateValidationResponse> ValidateScribanTempla
126204
jobName,
127205
buildName,
128206
duration,
129-
null
130-
)
207+
"logs"
208+
),
209+
"some error",
210+
DateTimeOffset.UtcNow
131211
);
132212

133213
var renderer = await NotificationsBase.Renderer.ConstructRenderer(

src/ApiService/ApiService/onefuzzlib/notifications/NotificationsBase.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ public static async Async.Task<Renderer> ConstructRenderer(
7676
inputUrl = new Uri(context.Containers.AuthDownloadUrl(report.InputBlob.Container, report.InputBlob.Name));
7777
}
7878

79-
await context.ConfigurationRefresher.TryRefreshAsync().IgnoreResult();
8079
var scribanOnlyFeatureFlag = await context.FeatureManagerSnapshot.IsEnabledAsync(FeatureFlagConstants.EnableScribanOnly);
8180
log.Info($"ScribanOnlyFeatureFlag: {scribanOnlyFeatureFlag}");
8281

src/ApiService/IntegrationTests/Fakes/TestServiceConfiguration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public TestServiceConfiguration(string tablePrefix) {
3535
public string? OneFuzzInstanceName => "UnitTestInstance";
3636

3737
public string? OneFuzzKeyvault => "TestOneFuzzKeyVault";
38+
public string? OneFuzzInstance => "https://onefuzz-integration-test.example.com";
3839

3940
// -- Remainder not implemented --
4041

@@ -57,7 +58,6 @@ public TestServiceConfiguration(string tablePrefix) {
5758

5859
public string? DiagnosticsAzureBlobRetentionDays => throw new System.NotImplementedException();
5960

60-
public string? OneFuzzInstance => throw new System.NotImplementedException();
6161

6262
public string? OneFuzzMonitor => throw new System.NotImplementedException();
6363

src/ApiService/IntegrationTests/JinjaToScribanMigrationTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,33 @@ public async Async.Task Migration_Happens_When_Not_Dry_run() {
9797
template.Project.Should().BeEquivalentTo(JinjaTemplateAdapter.AdaptForScriban(MigratableAdoTemplate().Project));
9898
}
9999

100+
[Fact]
101+
public async Async.Task OptionalFieldsAreSupported() {
102+
await ConfigureAuth();
103+
104+
var adoTemplate = new AdoTemplate(
105+
new Uri("http://example.com"),
106+
new SecretData<string>(new SecretValue<string>("some secret")),
107+
"{{ report.input_blob.container }}",
108+
"{{ if org }} blah {{ end }}",
109+
Array.Empty<string>().ToList(),
110+
new Dictionary<string, string> {
111+
{ "abc", "{{ if org }} blah {{ end }}"}
112+
},
113+
new ADODuplicateTemplate(
114+
Array.Empty<string>().ToList(),
115+
new Dictionary<string, string>(),
116+
new Dictionary<string, string> {
117+
{ "onDuplicateComment", "{{ if org }} blah {{ end }}" }
118+
},
119+
"{{ if org }} blah {{ end }}"
120+
),
121+
"{{ if org }} blah {{ end }}"
122+
);
123+
124+
(await JinjaTemplateAdapter.IsValidScribanNotificationTemplate(Context, Logger, adoTemplate)).Should().BeTrue();
125+
}
126+
100127
[Fact]
101128
public async Async.Task All_ADO_Fields_Are_Migrated() {
102129
await ConfigureAuth();

0 commit comments

Comments
 (0)