Skip to content

Commit

Permalink
Remove JSON examples from artifacts
Browse files Browse the repository at this point in the history
Closes Green-Software-Foundation#440

Signed-off-by: Yasumasa Suenaga <[email protected]>
  • Loading branch information
YaSuenag committed Jan 30, 2025
1 parent a9412ac commit d245c39
Show file tree
Hide file tree
Showing 20 changed files with 85 additions and 83 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/1-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,11 @@ jobs:
directory: ${{ env.DOTNET_SRC_DIR }}

- name: Generate Open API
run: dotnet tool run swagger tofile --output ./wwwroot/api/v1/swagger.yaml --yaml ${{ env.DLL_FILE_PATH }} v1
env:
DataSources__EmissionsDataSource: Json
DataSources__Configurations__Json__Type: JSON
DOTNET_ROLL_FORWARD: LatestMajor
run: dotnet tool run swagger tofile --output ./wwwroot/api/v1/swagger.yaml --yaml ${{ env.DLL_FILE_PATH }} v1
working-directory: ./src/CarbonAware.WebApi/src

- name: Upload swagger artifact
Expand All @@ -146,7 +148,7 @@ jobs:

- name: Docker Run Container
run: |
docker run -d --name runnable-container -p 8080:8080 ca-api
docker run -d --name runnable-container -e DataSources__EmissionsDataSource=Json -e DataSources__Configurations__Json__Type=JSON -p 8080:8080 ca-api
docker container ls
- name: Docker WGET Health Endpoint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,12 @@
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMapsFree\mock\CarbonAware.DataSources.ElectricityMapsFree.Mocks.csproj" />
<ProjectReference Include="..\..\src\CarbonAware.CLI.csproj" />
</ItemGroup>
</Project>

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

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ public void Setup()
{
Environment.SetEnvironmentVariable("DataSources__EmissionsDataSource", "Json");
Environment.SetEnvironmentVariable("DataSources__Configurations__Json__Type", "JSON");
Environment.SetEnvironmentVariable("DataSources__Configurations__Json__DataFileLocation", "test-data-azure-emissions.json");
_dataSourceMocker = new JsonDataSourceMocker();
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
</ItemGroup>

<ItemGroup>
<InternalsVisibleTo Include="CarbonAware.WebApi.IntegrationTests" />
<InternalsVisibleTo Include="CarbonAware.CLI.IntegrationTests" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,18 @@
namespace CarbonAware.DataSources.Json.Mocks;
public class JsonDataSourceMocker : IDataSourceMocker
{
public JsonDataSourceMocker() { }

public string DataFileName { get; set; }

public JsonDataSourceMocker() {
DataFileName = "test-data-azure-emissions.json";
}

public void SetupDataMock(DateTimeOffset start, DateTimeOffset end, string location)
{
string path = new JsonDataSourceConfiguration().DataFileLocation;
var config = new JsonDataSourceConfiguration();
config.DataFileLocation = DataFileName;
string path = config.DataFileLocation;

var data = new List<EmissionsData>();
DateTimeOffset pointTime = start;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,6 @@
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<Content Include="$(ProjectDir)..\..\..\data\data-sources\**\*.json"
Link="\data-sources\json\%(RecursiveDir)%(Filename)%(Extension)">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

<ItemGroup>
<InternalsVisibleTo Include="CarbonAware.DataSources.Json.Mocks" />
<InternalsVisibleTo Include="CarbonAware.DataSources.Json.Tests" />
Expand All @@ -24,4 +17,8 @@
<ItemGroup>
<ProjectReference Include="..\..\..\CarbonAware\src\CarbonAware.csproj" />
</ItemGroup>
</Project>

<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
<MakeDir Directories="$(PublishDir)\data-sources\json" />
</Target>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ namespace CarbonAware.DataSources.Json.Configuration;
internal class JsonDataSourceConfiguration
{
private const string BaseDirectory = "data-sources/json";
private const string DefaultDataFile = "test-data-azure-emissions.json";
private const string DirectoryRegExPattern = @"^(?!\.{2})[-\\/a-zA-Z_\d\.: ]*$";
private string assemblyDirectory;
private string? dataFileLocation;
Expand All @@ -36,7 +35,6 @@ public JsonDataSourceConfiguration()
{
var assemblyPath = Assembly.GetExecutingAssembly().Location;
assemblyDirectory = Path.GetDirectoryName(assemblyPath)!;
DataFileLocation = DefaultDataFile;
CacheJsonData = true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@
<ProjectReference Include="..\src\CarbonAware.DataSources.Json.csproj" />
</ItemGroup>

<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
<MakeDir Directories="$(TargetDir)\data-sources\json" />
</Target>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,6 @@ public void Setup()
AssemblyPath = Assembly.GetExecutingAssembly().Location;
}

[Test]
public void GetDefaultDataFileLocation_IsNotNull_ExpectedBaseDir()
{
Assert.That(_configuration.DataFileLocation, Is.Not.Null);
var expectedDir = Path.Combine(Path.GetDirectoryName(AssemblyPath)!, BaseDir);
Assert.That(_configuration.DataFileLocation, Contains.Substring(expectedDir));
}

[TestCase("../newfile.json", TestName = "setting parent's dir")]
[TestCase("~/newfile.json", TestName = "setting user's home dir")]
[TestCase(null, TestName = "setting null filepath")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,16 @@ public async Task GetCarbonIntensityAsync_ReturnsEmptyEmissionData()
public async Task GetCarbonIntensityAsync_CacheEmissionData(bool cache)
{
var logger = Mock.Of<ILogger<JsonDataSource>>();

var monitor = new Mock<IOptionsMonitor<JsonDataSourceConfiguration>>();
JsonDataSourceMocker dsMocker = new();
var config = new JsonDataSourceConfiguration
{
DataFileLocation = dsMocker.DataFileName,
CacheJsonData = cache
};
monitor.Setup(m => m.CurrentValue).Returns(config);
var dataSource = new JsonDataSource(logger, monitor.Object);

JsonDataSourceMocker dsMocker = new();

var today = DateTimeOffset.Now;
var todayEnd = today.AddMinutes(30);
var todayLocation = new Location() { Name = "japan" };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,13 @@
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<Content Include="$(ProjectDir)..\..\data\location-sources\**\*.json"
Link="\location-sources\json\%(RecursiveDir)%(Filename)%(Extension)">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

<ItemGroup>
<InternalsVisibleTo Include="GSF.CarbonAware" />
<InternalsVisibleTo Include="CarbonAware.LocationSources.Test" />
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
</ItemGroup>
</Project>

<Target Name="CreateLocationDirectory" AfterTargets="Build">
<MakeDir Directories="$(PublishDir)\location-sources\json" />
</Target>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,8 @@
<ItemGroup>
<ProjectReference Include="..\src\CarbonAware.LocationSources.csproj" />
</ItemGroup>

<Target Name="CreateLocationDirectory" AfterTargets="Build">
<MakeDir Directories="$(TargetDir)\location-sources\json" />
</Target>
</Project>
11 changes: 9 additions & 2 deletions src/CarbonAware.WebApi/src/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,15 @@ ENV DOTNET_ROLL_FORWARD LatestMajor
# Copy everything from source
COPY . ./
# Use implicit restore to build and publish
RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -a $TARGETARCH -o publish

RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -a $TARGETARCH -c Release -o publish
# Generate OpenAPI spec
WORKDIR /app/CarbonAware.WebApi/src
# Set environment variables for dummy datasource to start "dotnet tool run"
ENV DataSources__EmissionsDataSource=Json
ENV DataSources__Configurations__Json__Type=JSON
RUN dotnet tool restore && \
mkdir -p /app/publish/wwwroot/api/v1 && \
dotnet tool run swagger tofile --output /app/publish/wwwroot/api/v1/swagger.yaml --yaml /app/publish/CarbonAware.WebApi.dll v1

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
Expand Down
10 changes: 0 additions & 10 deletions src/CarbonAware.WebApi/src/appsettings.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
{
"DataSources": {
"EmissionsDataSource": "test-json",
"ForecastDataSource": "", // We don't currently publish a sample test data source for forecasts.
"Configurations": {
"test-json": {
"Type": "JSON",
"DataFileLocation": "test-data-azure-emissions.json"
}
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,17 @@
</ItemGroup>

<ItemGroup>
<ProjectReference
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Json\mock\CarbonAware.DataSources.Json.Mocks.csproj" />
<ProjectReference
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.WattTime\mock\CarbonAware.DataSources.WattTime.Mocks.csproj" />
<ProjectReference
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMaps\mock\CarbonAware.DataSources.ElectricityMaps.Mocks.csproj" />
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMapsFree\mock\CarbonAware.DataSources.ElectricityMapsFree.Mocks.csproj" />
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Json\mock\CarbonAware.DataSources.Json.Mocks.csproj" />
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.WattTime\mock\CarbonAware.DataSources.WattTime.Mocks.csproj" />
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.ElectricityMaps\mock\CarbonAware.DataSources.ElectricityMaps.Mocks.csproj" />
<ProjectReference Include="..\..\src\CarbonAware.WebApi.csproj" />
<ProjectReference
Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Registration\CarbonAware.DataSources.Registration.csproj" />
<ProjectReference Include="..\..\..\CarbonAware.DataSources\CarbonAware.DataSources.Registration\CarbonAware.DataSources.Registration.csproj" />
</ItemGroup>

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

</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ public async Task EmissionsForecastsCurrent_SupportedDataSources_ReturnsOk()
[Test]
public async Task EmissionsForecastsCurrent_StartAndEndOutsideWindow_ReturnsBadRequest()
{
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/current'", DataSourceType.JSON);
IgnoreTestForDataSource("data source does not implement '/emissions/forecasts/current'", DataSourceType.JSON, DataSourceType.ElectricityMapsFree);

_dataSourceMocker?.SetupForecastMock();

Expand All @@ -236,7 +236,7 @@ public async Task EmissionsForecastsCurrent_StartAndEndOutsideWindow_ReturnsBadR
public async Task EmissionsForecastsCurrent_InvalidLocationQueryString_ReturnsBadRequest(string queryString, string value)
{

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

_dataSourceMocker?.SetupForecastMock();

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

_dataSourceMocker?.SetupForecastMock();
var forecastData = Enumerable.Range(0, 1).Select(x => new
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using CarbonAware.Interfaces;
using CarbonAware.DataSources.Json.Mocks;
using CarbonAware.DataSources.ElectricityMaps.Mocks;
using CarbonAware.DataSources.ElectricityMapsFree.Mocks;
using CarbonAware.DataSources.WattTime.Mocks;
using Microsoft.AspNetCore.Mvc.Testing;
using NUnit.Framework;
Expand Down Expand Up @@ -116,6 +117,16 @@ public void Setup()
_dataSourceMocker = new ElectricityMapsDataSourceMocker();
break;
}
case DataSourceType.ElectricityMapsFree:
{
Environment.SetEnvironmentVariable("DataSources__EmissionsDataSource", "ElectricityMapsFree");
/* ElectricityMapsFree datasource does not support forecast data */
Environment.SetEnvironmentVariable("DataSources__Configurations__ElectricityMapsFree__Type", "ElectricityMapsFree");
Environment.SetEnvironmentVariable("DataSources__Configurations__ElectricityMapsFree__token", "test");

_dataSourceMocker = new ElectricityMapsFreeDataSourceMocker();
break;
}
case DataSourceType.None:
{
Environment.SetEnvironmentVariable("DataSources__EmissionsDataSource", "");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
namespace CarbonAware.WebApi.IntegrationTests;

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

public UnconfiguredWebApiTests(DataSourceType dataSource) : base(dataSource) { }
public WebApiEndpointTests(DataSourceType dataSource) : base(dataSource) { }

[Test]
public async Task HealthCheck_ReturnsOK()
Expand Down
7 changes: 4 additions & 3 deletions src/GSF.CarbonAware/src/GSF.CarbonAware.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,13 @@
<Content Include="$(AssemblyName).targets" Pack="true"
PackagePath="build/$(AssemblyName).targets" />
<Content Include="$(TargetDir)/CarbonAware*.dll" Pack="true" PackagePath="lib/net8.0/" />
<Content Include="$(TargetDir)/data-sources/**/*.json" Pack="true" PackagePath="data-sources/" />
<Content Include="$(TargetDir)/location-sources/**/*.json" Pack="true"
PackagePath="location-sources/" />
</ItemGroup>

<ItemGroup Label="IncludeSymbols" Condition="$(IncludeSymbols) == true">
<Content Include="$(TargetDir)/CarbonAware*.pdb" Pack="true" PackagePath="lib/net8.0/" />
</ItemGroup>

<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
<MakeDir Directories="$(TargetDir)\data-sources\json;$(TargetDir)\location-sources\json" />
</Target>
</Project>
19 changes: 3 additions & 16 deletions src/GSF.CarbonAware/src/GSF.CarbonAware.targets
Original file line number Diff line number Diff line change
@@ -1,24 +1,11 @@
<Project>
<ItemGroup>
<DataSourceFiles Include="$(MSBuildThisFileDirectory)/../data-sources/**/*.*" />
</ItemGroup>
<Target Name="CopyDataSourceFiles" BeforeTargets="BeforeBuild">
<Copy SourceFiles="@(DataSourceFiles)" DestinationFolder="$(TargetDir)/data-sources/%(RecursiveDir)" />
<!-- Copy to bin dir for Azure Functions to work -->
<Copy SourceFiles="@(DataSourceFiles)" DestinationFolder="$(TargetDir)/bin/data-sources/%(RecursiveDir)" />
</Target>
<ItemGroup>
<LocationSourceFiles Include="$(MSBuildThisFileDirectory)/../location-sources/**/*.*" />
</ItemGroup>
<Target Name="CopyLocationSourceFiles" BeforeTargets="BeforeBuild">
<Copy SourceFiles="@(LocationSourceFiles)" DestinationFolder="$(TargetDir)/location-sources/%(RecursiveDir)" />
<!-- Copy to bin dir for Azure Functions to work -->
<Copy SourceFiles="@(LocationSourceFiles)" DestinationFolder="$(TargetDir)/bin/location-sources/%(RecursiveDir)" />
</Target>
<ItemGroup>
<DllFiles Include="$(MSBuildThisFileDirectory)/../lib/net8.0/*.dll" />
</ItemGroup>
<Target Name="CopyDllFiles" BeforeTargets="BeforeBuild">
<Copy SourceFiles="@(DllFiles)" DestinationFolder="$(TargetDir)" />
</Target>
<Target Name="CreateDatasourceDirectory" AfterTargets="Build">
<MakeDir Directories="$(PublishDir)\data-sources\json,$(PublishDir)\location-sources\json" />
</Target>
</Project>

0 comments on commit d245c39

Please sign in to comment.