Skip to content

Commit d245c39

Browse files
committed
Remove JSON examples from artifacts
Closes #440 Signed-off-by: Yasumasa Suenaga <[email protected]>
1 parent a9412ac commit d245c39

20 files changed

+85
-83
lines changed

Diff for: .github/workflows/1-pr.yaml

+4-2
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,11 @@ jobs:
122122
directory: ${{ env.DOTNET_SRC_DIR }}
123123

124124
- name: Generate Open API
125-
run: dotnet tool run swagger tofile --output ./wwwroot/api/v1/swagger.yaml --yaml ${{ env.DLL_FILE_PATH }} v1
126125
env:
126+
DataSources__EmissionsDataSource: Json
127+
DataSources__Configurations__Json__Type: JSON
127128
DOTNET_ROLL_FORWARD: LatestMajor
129+
run: dotnet tool run swagger tofile --output ./wwwroot/api/v1/swagger.yaml --yaml ${{ env.DLL_FILE_PATH }} v1
128130
working-directory: ./src/CarbonAware.WebApi/src
129131

130132
- name: Upload swagger artifact
@@ -146,7 +148,7 @@ jobs:
146148

147149
- name: Docker Run Container
148150
run: |
149-
docker run -d --name runnable-container -p 8080:8080 ca-api
151+
docker run -d --name runnable-container -e DataSources__EmissionsDataSource=Json -e DataSources__Configurations__Json__Type=JSON -p 8080:8080 ca-api
150152
docker container ls
151153
152154
- name: Docker WGET Health Endpoint

Diff for: src/CarbonAware.CLI/test/integrationTests/CarbonAware.CLI.IntegrationTests.csproj

+9-1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,12 @@
2525
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMapsFree\mock\CarbonAware.DataSources.ElectricityMapsFree.Mocks.csproj" />
2626
<ProjectReference Include="..\..\src\CarbonAware.CLI.csproj" />
2727
</ItemGroup>
28-
</Project>
28+
29+
<Target Name="CopyDataFiles" AfterTargets="Build">
30+
<Copy SourceFiles="$(ProjectDir)..\..\..\data\data-sources\test-data-azure-emissions.json"
31+
DestinationFiles="$(TargetDir)\data-sources\json\demo.json" SkipUnchangedFiles="true" />
32+
<Copy SourceFiles="$(ProjectDir)..\..\..\data\location-sources\azure-regions.json"
33+
DestinationFiles="$(TargetDir)\location-sources\json\azure-regions.json" SkipUnchangedFiles="true" />
34+
</Target>
35+
36+
</Project>

Diff for: src/CarbonAware.CLI/test/integrationTests/IntegrationTestingBase.cs

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public void Setup()
100100
{
101101
Environment.SetEnvironmentVariable("DataSources__EmissionsDataSource", "Json");
102102
Environment.SetEnvironmentVariable("DataSources__Configurations__Json__Type", "JSON");
103+
Environment.SetEnvironmentVariable("DataSources__Configurations__Json__DataFileLocation", "test-data-azure-emissions.json");
103104
_dataSourceMocker = new JsonDataSourceMocker();
104105
break;
105106
}

Diff for: src/CarbonAware.DataSources/CarbonAware.DataSources.ElectricityMapsFree/mock/CarbonAware.DataSources.ElectricityMapsFree.Mocks.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
</ItemGroup>
1616

1717
<ItemGroup>
18+
<InternalsVisibleTo Include="CarbonAware.WebApi.IntegrationTests" />
1819
<InternalsVisibleTo Include="CarbonAware.CLI.IntegrationTests" />
1920
</ItemGroup>
2021

Diff for: src/CarbonAware.DataSources/CarbonAware.DataSources.Json/mock/JsonDataSourceMocker.cs

+9-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,18 @@
66
namespace CarbonAware.DataSources.Json.Mocks;
77
public class JsonDataSourceMocker : IDataSourceMocker
88
{
9-
public JsonDataSourceMocker() { }
9+
10+
public string DataFileName { get; set; }
11+
12+
public JsonDataSourceMocker() {
13+
DataFileName = "test-data-azure-emissions.json";
14+
}
1015

1116
public void SetupDataMock(DateTimeOffset start, DateTimeOffset end, string location)
1217
{
13-
string path = new JsonDataSourceConfiguration().DataFileLocation;
18+
var config = new JsonDataSourceConfiguration();
19+
config.DataFileLocation = DataFileName;
20+
string path = config.DataFileLocation;
1421

1522
var data = new List<EmissionsData>();
1623
DateTimeOffset pointTime = start;

Diff for: src/CarbonAware.DataSources/CarbonAware.DataSources.Json/src/CarbonAware.DataSources.Json.csproj

+5-8
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@
77
<IsPackable>false</IsPackable>
88
</PropertyGroup>
99

10-
<ItemGroup>
11-
<Content Include="$(ProjectDir)..\..\..\data\data-sources\**\*.json"
12-
Link="\data-sources\json\%(RecursiveDir)%(Filename)%(Extension)">
13-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
14-
</Content>
15-
</ItemGroup>
16-
1710
<ItemGroup>
1811
<InternalsVisibleTo Include="CarbonAware.DataSources.Json.Mocks" />
1912
<InternalsVisibleTo Include="CarbonAware.DataSources.Json.Tests" />
@@ -24,4 +17,8 @@
2417
<ItemGroup>
2518
<ProjectReference Include="..\..\..\CarbonAware\src\CarbonAware.csproj" />
2619
</ItemGroup>
27-
</Project>
20+
21+
<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
22+
<MakeDir Directories="$(PublishDir)\data-sources\json" />
23+
</Target>
24+
</Project>

Diff for: src/CarbonAware.DataSources/CarbonAware.DataSources.Json/src/Configuration/JsonDataSourceConfiguration.cs

-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ namespace CarbonAware.DataSources.Json.Configuration;
99
internal class JsonDataSourceConfiguration
1010
{
1111
private const string BaseDirectory = "data-sources/json";
12-
private const string DefaultDataFile = "test-data-azure-emissions.json";
1312
private const string DirectoryRegExPattern = @"^(?!\.{2})[-\\/a-zA-Z_\d\.: ]*$";
1413
private string assemblyDirectory;
1514
private string? dataFileLocation;
@@ -36,7 +35,6 @@ public JsonDataSourceConfiguration()
3635
{
3736
var assemblyPath = Assembly.GetExecutingAssembly().Location;
3837
assemblyDirectory = Path.GetDirectoryName(assemblyPath)!;
39-
DataFileLocation = DefaultDataFile;
4038
CacheJsonData = true;
4139
}
4240

Diff for: src/CarbonAware.DataSources/CarbonAware.DataSources.Json/test/CarbonAware.DataSources.Json.Tests.csproj

+3
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,7 @@
2727
<ProjectReference Include="..\src\CarbonAware.DataSources.Json.csproj" />
2828
</ItemGroup>
2929

30+
<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
31+
<MakeDir Directories="$(TargetDir)\data-sources\json" />
32+
</Target>
3033
</Project>

Diff for: src/CarbonAware.DataSources/CarbonAware.DataSources.Json/test/JsonDataSourceConfigurationTests.cs

-8
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ public void Setup()
2424
AssemblyPath = Assembly.GetExecutingAssembly().Location;
2525
}
2626

27-
[Test]
28-
public void GetDefaultDataFileLocation_IsNotNull_ExpectedBaseDir()
29-
{
30-
Assert.That(_configuration.DataFileLocation, Is.Not.Null);
31-
var expectedDir = Path.Combine(Path.GetDirectoryName(AssemblyPath)!, BaseDir);
32-
Assert.That(_configuration.DataFileLocation, Contains.Substring(expectedDir));
33-
}
34-
3527
[TestCase("../newfile.json", TestName = "setting parent's dir")]
3628
[TestCase("~/newfile.json", TestName = "setting user's home dir")]
3729
[TestCase(null, TestName = "setting null filepath")]

Diff for: src/CarbonAware.DataSources/CarbonAware.DataSources.Json/test/JsonDataSourceTests.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,16 @@ public async Task GetCarbonIntensityAsync_ReturnsEmptyEmissionData()
111111
public async Task GetCarbonIntensityAsync_CacheEmissionData(bool cache)
112112
{
113113
var logger = Mock.Of<ILogger<JsonDataSource>>();
114-
115114
var monitor = new Mock<IOptionsMonitor<JsonDataSourceConfiguration>>();
115+
JsonDataSourceMocker dsMocker = new();
116116
var config = new JsonDataSourceConfiguration
117117
{
118+
DataFileLocation = dsMocker.DataFileName,
118119
CacheJsonData = cache
119120
};
120121
monitor.Setup(m => m.CurrentValue).Returns(config);
121122
var dataSource = new JsonDataSource(logger, monitor.Object);
122123

123-
JsonDataSourceMocker dsMocker = new();
124-
125124
var today = DateTimeOffset.Now;
126125
var todayEnd = today.AddMinutes(30);
127126
var todayLocation = new Location() { Name = "japan" };

Diff for: src/CarbonAware.LocationSources/src/CarbonAware.LocationSources.csproj

+5-8
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,13 @@
1212
<IsPackable>false</IsPackable>
1313
</PropertyGroup>
1414

15-
<ItemGroup>
16-
<Content Include="$(ProjectDir)..\..\data\location-sources\**\*.json"
17-
Link="\location-sources\json\%(RecursiveDir)%(Filename)%(Extension)">
18-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
19-
</Content>
20-
</ItemGroup>
21-
2215
<ItemGroup>
2316
<InternalsVisibleTo Include="GSF.CarbonAware" />
2417
<InternalsVisibleTo Include="CarbonAware.LocationSources.Test" />
2518
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
2619
</ItemGroup>
27-
</Project>
20+
21+
<Target Name="CreateLocationDirectory" AfterTargets="Build">
22+
<MakeDir Directories="$(PublishDir)\location-sources\json" />
23+
</Target>
24+
</Project>

Diff for: src/CarbonAware.LocationSources/test/CarbonAware.LocationSources.Test.csproj

+4
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@
2424
<ItemGroup>
2525
<ProjectReference Include="..\src\CarbonAware.LocationSources.csproj" />
2626
</ItemGroup>
27+
28+
<Target Name="CreateLocationDirectory" AfterTargets="Build">
29+
<MakeDir Directories="$(TargetDir)\location-sources\json" />
30+
</Target>
2731
</Project>

Diff for: src/CarbonAware.WebApi/src/Dockerfile

+9-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,15 @@ ENV DOTNET_ROLL_FORWARD LatestMajor
1717
# Copy everything from source
1818
COPY . ./
1919
# Use implicit restore to build and publish
20-
RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -a $TARGETARCH -o publish
21-
20+
RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -a $TARGETARCH -c Release -o publish
21+
# Generate OpenAPI spec
22+
WORKDIR /app/CarbonAware.WebApi/src
23+
# Set environment variables for dummy datasource to start "dotnet tool run"
24+
ENV DataSources__EmissionsDataSource=Json
25+
ENV DataSources__Configurations__Json__Type=JSON
26+
RUN dotnet tool restore && \
27+
mkdir -p /app/publish/wwwroot/api/v1 && \
28+
dotnet tool run swagger tofile --output /app/publish/wwwroot/api/v1/swagger.yaml --yaml /app/publish/CarbonAware.WebApi.dll v1
2229

2330
# Build runtime image
2431
FROM mcr.microsoft.com/dotnet/aspnet:8.0

Diff for: src/CarbonAware.WebApi/src/appsettings.json

-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,4 @@
11
{
2-
"DataSources": {
3-
"EmissionsDataSource": "test-json",
4-
"ForecastDataSource": "", // We don't currently publish a sample test data source for forecasts.
5-
"Configurations": {
6-
"test-json": {
7-
"Type": "JSON",
8-
"DataFileLocation": "test-data-azure-emissions.json"
9-
}
10-
}
11-
},
122
"Logging": {
133
"LogLevel": {
144
"Default": "Information",

Diff for: src/CarbonAware.WebApi/test/integrationTests/CarbonAware.WebApi.IntegrationTests.csproj

+8-11
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,17 @@
2222
</ItemGroup>
2323

2424
<ItemGroup>
25-
<ProjectReference
26-
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Json\mock\CarbonAware.DataSources.Json.Mocks.csproj" />
27-
<ProjectReference
28-
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.WattTime\mock\CarbonAware.DataSources.WattTime.Mocks.csproj" />
29-
<ProjectReference
30-
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMaps\mock\CarbonAware.DataSources.ElectricityMaps.Mocks.csproj" />
25+
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMapsFree\mock\CarbonAware.DataSources.ElectricityMapsFree.Mocks.csproj" />
26+
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Json\mock\CarbonAware.DataSources.Json.Mocks.csproj" />
27+
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.WattTime\mock\CarbonAware.DataSources.WattTime.Mocks.csproj" />
28+
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMaps\mock\CarbonAware.DataSources.ElectricityMaps.Mocks.csproj" />
3129
<ProjectReference Include="..\..\src\CarbonAware.WebApi.csproj" />
32-
<ProjectReference
33-
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Registration\CarbonAware.DataSources.Registration.csproj" />
30+
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Registration\CarbonAware.DataSources.Registration.csproj" />
3431
</ItemGroup>
3532

3633
<Target Name="CopyDataFiles" AfterTargets="Build">
37-
<Copy SourceFiles="$(ProjectDir)..\..\..\data\data-sources\test-data-azure-emissions.json"
38-
DestinationFiles="$(TargetDir)\data-sources\json\demo.json" SkipUnchangedFiles="true" />
34+
<Copy SourceFiles="$(ProjectDir)..\..\..\data\data-sources\test-data-azure-emissions.json" DestinationFiles="$(TargetDir)\data-sources\json\demo.json" SkipUnchangedFiles="true" />
35+
<Copy SourceFiles="$(ProjectDir)..\..\..\data\location-sources\azure-regions.json" DestinationFiles="$(TargetDir)\location-sources\json\azure-regions.json" SkipUnchangedFiles="true" />
3936
</Target>
4037

41-
</Project>
38+
</Project>

Diff for: src/CarbonAware.WebApi/test/integrationTests/CarbonAwareControllerTests.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public async Task EmissionsForecastsCurrent_SupportedDataSources_ReturnsOk()
213213
[Test]
214214
public async Task EmissionsForecastsCurrent_StartAndEndOutsideWindow_ReturnsBadRequest()
215215
{
216-
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/current'", DataSourceType.JSON);
216+
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/current'", DataSourceType.JSON, DataSourceType.ElectricityMapsFree);
217217

218218
_dataSourceMocker?.SetupForecastMock();
219219

@@ -236,7 +236,7 @@ public async Task EmissionsForecastsCurrent_StartAndEndOutsideWindow_ReturnsBadR
236236
public async Task EmissionsForecastsCurrent_InvalidLocationQueryString_ReturnsBadRequest(string queryString, string value)
237237
{
238238

239-
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/current'", DataSourceType.JSON);
239+
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/current'", DataSourceType.JSON, DataSourceType.ElectricityMapsFree);
240240

241241
_dataSourceMocker?.SetupForecastMock();
242242

@@ -256,7 +256,7 @@ public async Task EmissionsForecastsCurrent_InvalidLocationQueryString_ReturnsBa
256256
[TestCase("eastus", "2021-9-1T08:30:00Z", TestName = "EmissionsForecastsBatch returns BadRequest for wrong date format")]
257257
public async Task EmissionsForecastsBatch_MissingRequiredParams_ReturnsBadRequest(string location, string requestedAt)
258258
{
259-
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/batch'", DataSourceType.JSON);
259+
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/batch'", DataSourceType.JSON, DataSourceType.ElectricityMapsFree);
260260

261261
_dataSourceMocker?.SetupForecastMock();
262262
var forecastData = Enumerable.Range(0, 1).Select(x => new

Diff for: src/CarbonAware.WebApi/test/integrationTests/IntegrationTestingBase.cs

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using CarbonAware.Interfaces;
33
using CarbonAware.DataSources.Json.Mocks;
44
using CarbonAware.DataSources.ElectricityMaps.Mocks;
5+
using CarbonAware.DataSources.ElectricityMapsFree.Mocks;
56
using CarbonAware.DataSources.WattTime.Mocks;
67
using Microsoft.AspNetCore.Mvc.Testing;
78
using NUnit.Framework;
@@ -116,6 +117,16 @@ public void Setup()
116117
_dataSourceMocker = new ElectricityMapsDataSourceMocker();
117118
break;
118119
}
120+
case DataSourceType.ElectricityMapsFree:
121+
{
122+
Environment.SetEnvironmentVariable("DataSources__EmissionsDataSource", "ElectricityMapsFree");
123+
/* ElectricityMapsFree datasource does not support forecast data */
124+
Environment.SetEnvironmentVariable("DataSources__Configurations__ElectricityMapsFree__Type", "ElectricityMapsFree");
125+
Environment.SetEnvironmentVariable("DataSources__Configurations__ElectricityMapsFree__token", "test");
126+
127+
_dataSourceMocker = new ElectricityMapsFreeDataSourceMocker();
128+
break;
129+
}
119130
case DataSourceType.None:
120131
{
121132
Environment.SetEnvironmentVariable("DataSources__EmissionsDataSource", "");

Diff for: src/CarbonAware.WebApi/test/integrationTests/UnconfiguredWebApiTests.cs renamed to src/CarbonAware.WebApi/test/integrationTests/WebApiEndpointTests.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
namespace CarbonAware.WebApi.IntegrationTests;
66

77
/// <summary>
8-
/// Tests that the Web API starts without configuration.
8+
/// Tests that static Web API endpoints.
99
/// </summary>
10-
[TestFixture(DataSourceType.None)]
11-
class UnconfiguredWebApiTests : IntegrationTestingBase
10+
[TestFixture(DataSourceType.JSON)]
11+
class WebApiEndpointTests : IntegrationTestingBase
1212
{
1313
private readonly string healthURI = "/health";
1414
private readonly string fakeURI = "/fake-endpoint";
1515

16-
public UnconfiguredWebApiTests(DataSourceType dataSource) : base(dataSource) { }
16+
public WebApiEndpointTests(DataSourceType dataSource) : base(dataSource) { }
1717

1818
[Test]
1919
public async Task HealthCheck_ReturnsOK()

Diff for: src/GSF.CarbonAware/src/GSF.CarbonAware.csproj

+4-3
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,13 @@
5050
<Content Include="$(AssemblyName).targets" Pack="true"
5151
PackagePath="build/$(AssemblyName).targets" />
5252
<Content Include="$(TargetDir)/CarbonAware*.dll" Pack="true" PackagePath="lib/net8.0/" />
53-
<Content Include="$(TargetDir)/data-sources/**/*.json" Pack="true" PackagePath="data-sources/" />
54-
<Content Include="$(TargetDir)/location-sources/**/*.json" Pack="true"
55-
PackagePath="location-sources/" />
5653
</ItemGroup>
5754

5855
<ItemGroup Label="IncludeSymbols" Condition="$(IncludeSymbols) == true">
5956
<Content Include="$(TargetDir)/CarbonAware*.pdb" Pack="true" PackagePath="lib/net8.0/" />
6057
</ItemGroup>
58+
59+
<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
60+
<MakeDir Directories="$(TargetDir)\data-sources\json;$(TargetDir)\location-sources\json" />
61+
</Target>
6162
</Project>

Diff for: src/GSF.CarbonAware/src/GSF.CarbonAware.targets

+3-16
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,11 @@
11
<Project>
2-
<ItemGroup>
3-
<DataSourceFiles Include="$(MSBuildThisFileDirectory)/../data-sources/**/*.*" />
4-
</ItemGroup>
5-
<Target Name="CopyDataSourceFiles" BeforeTargets="BeforeBuild">
6-
<Copy SourceFiles="@(DataSourceFiles)" DestinationFolder="$(TargetDir)/data-sources/%(RecursiveDir)" />
7-
<!-- Copy to bin dir for Azure Functions to work -->
8-
<Copy SourceFiles="@(DataSourceFiles)" DestinationFolder="$(TargetDir)/bin/data-sources/%(RecursiveDir)" />
9-
</Target>
10-
<ItemGroup>
11-
<LocationSourceFiles Include="$(MSBuildThisFileDirectory)/../location-sources/**/*.*" />
12-
</ItemGroup>
13-
<Target Name="CopyLocationSourceFiles" BeforeTargets="BeforeBuild">
14-
<Copy SourceFiles="@(LocationSourceFiles)" DestinationFolder="$(TargetDir)/location-sources/%(RecursiveDir)" />
15-
<!-- Copy to bin dir for Azure Functions to work -->
16-
<Copy SourceFiles="@(LocationSourceFiles)" DestinationFolder="$(TargetDir)/bin/location-sources/%(RecursiveDir)" />
17-
</Target>
182
<ItemGroup>
193
<DllFiles Include="$(MSBuildThisFileDirectory)/../lib/net8.0/*.dll" />
204
</ItemGroup>
215
<Target Name="CopyDllFiles" BeforeTargets="BeforeBuild">
226
<Copy SourceFiles="@(DllFiles)" DestinationFolder="$(TargetDir)" />
237
</Target>
8+
<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
9+
<MakeDir Directories="$(PublishDir)\data-sources\json,$(PublishDir)\location-sources\json" />
10+
</Target>
2411
</Project>

0 commit comments

Comments
 (0)