@cloud-carbon-footprint/core
Version:
The core logic to get cloud usage data and estimate energy and carbon emissions.
81 lines (75 loc) • 2 kB
text/typescript
/*
* © 2021 Thoughtworks, Inc.
*/
import ComputeEstimator from '../ComputeEstimator'
import CloudConstants from '../../CloudConstantsTypes'
describe('ComputeEstimator', () => {
it('do estimates for AWS US East 1 region', () => {
const input = [
{
timestamp: new Date('2020-01-01'),
cpuUtilizationAverage: 1.0,
vCpuHours: 1.0,
usesAverageCPUConstant: false,
},
]
const awsUsEast1Region = 'us-east-1'
const awsEmissionsFactors = {
[awsUsEast1Region]: 0.000415755,
}
const awsConstants: CloudConstants = {
powerUsageEffectiveness: 1.135,
minWatts: 0.71,
maxWatts: 3.46,
replicationFactor: 2,
}
const result = new ComputeEstimator().estimate(
input,
awsUsEast1Region,
awsEmissionsFactors,
awsConstants,
)
expect(result).toEqual([
{
co2e: 6.960258393749999e-7,
timestamp: new Date('2020-01-01T00:00:00.000Z'),
kilowattHours: 0.0016741249999999998,
usesAverageCPUConstant: false,
},
])
})
it('do estimates for AWS South Africa with default replication factor and average watts', () => {
const input = [
{
timestamp: new Date('2020-01-01'),
cpuUtilizationAverage: 1.0,
vCpuHours: 1.0,
usesAverageCPUConstant: false,
},
]
const awsAfSouth1Region = 'af-south-1'
const awsEmissionsFactors = {
[awsAfSouth1Region]: 0.000928,
}
const awsConstants: CloudConstants = {
powerUsageEffectiveness: 1.135,
minWatts: 0.71,
maxWatts: 3.46,
averageWatts: 350,
}
const result = new ComputeEstimator().estimate(
input,
awsAfSouth1Region,
awsEmissionsFactors,
awsConstants,
)
expect(result).toEqual([
{
co2e: 0.000368648,
timestamp: new Date('2020-01-01T00:00:00.000Z'),
kilowattHours: 0.39725,
usesAverageCPUConstant: false,
},
])
})
})