Site: remove root circuit configuration (#14244)

This commit is contained in:
andig 2024-06-16 18:32:54 +02:00 • committed by GitHub
parent 477141e7f1
commit 68e66af64f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 100 additions and 46 deletions

View file

@ -6,10 +6,7 @@ import (
"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/api/globalconfig"
"github.com/evcc-io/evcc/core"
"github.com/evcc-io/evcc/meter"
"github.com/evcc-io/evcc/server/db"
"github.com/evcc-io/evcc/tariff"
"github.com/evcc-io/evcc/util/config"
"github.com/stretchr/testify/suite"
"go.uber.org/mock/gomock"
@ -39,7 +36,8 @@ func (suite *circuitsTestSuite) TestCircuitConf() {
var conf globalconfig.All
viper.SetConfigType("yaml")
suite.Require().NoError(viper.ReadConfig(strings.NewReader(`circuits:
suite.Require().NoError(viper.ReadConfig(strings.NewReader(`
circuits:
- name: master
maxPower: 10000
- name: slave
@ -63,11 +61,43 @@ loadpoints:
lps, err := configureLoadpoints(conf)
suite.Require().NoError(err)
suite.Require().Len(lps, 1)
suite.Require().NotNil(lps[0].GetCircuit())
}
func (suite *circuitsTestSuite) TestLoadpointMissingCircuitError() {
func (suite *circuitsTestSuite) TestCircuitMissingLoadpoint() {
var conf globalconfig.All
viper.SetConfigType("yaml")
suite.Require().NoError(viper.ReadConfig(strings.NewReader(`
circuits:
- name: master
- name: slave
parent: master
loadpoints:
- charger: test
`)))
suite.Require().NoError(viper.UnmarshalExact(&conf))
suite.Require().NoError(configureCircuits(conf.Circuits))
suite.Require().Len(config.Circuits().Devices(), 2)
suite.Require().False(config.Circuits().Devices()[0].Instance().HasMeter())
// empty charger
suite.Require().NoError(config.Chargers().Add(config.NewStaticDevice(config.Named{
Name: "test",
}, api.Charger(nil))))
lps, err := configureLoadpoints(conf)
suite.Require().NoError(err)
// circuit without device
err = validateCircuits(lps)
suite.Require().Error(err)
suite.Require().Equal("circuit slave has no meter and no loadpoint assigned", err.Error())
}
func (suite *circuitsTestSuite) TestMissingRootCircuit() {
var conf globalconfig.All
viper.SetConfigType("yaml")
@ -94,47 +124,50 @@ loadpoints:
lps, err := configureLoadpoints(conf)
suite.Require().NoError(err)
site := core.NewSite()
circuit.EXPECT().HasMeter().Return(false)
suite.Require().Error(validateCircuits(site, lps))
// root circuit
circuit.EXPECT().GetParent().Return(nil)
circuit.EXPECT().HasMeter().Return(true)
suite.Require().NoError(validateCircuits(lps))
// no root circuit
circuit.EXPECT().GetParent().Return(circuit)
// circuit.EXPECT().HasMeter().Return(true)
err = validateCircuits(lps)
suite.Require().Error(err)
suite.Require().Equal("missing root circuit", err.Error())
}
func (suite *circuitsTestSuite) TestSiteMissingCircuitError() {
func (suite *circuitsTestSuite) TestLoadpointUsingRootCircuit() {
var conf globalconfig.All
viper.SetConfigType("yaml")
suite.Require().NoError(viper.ReadConfig(strings.NewReader(`
loadpoints:
- charger: test
site:
meters:
grid: grid
circuit: root
`)))
suite.Require().NoError(viper.UnmarshalExact(&conf))
lps := []*core.Loadpoint{
new(core.Loadpoint),
}
ctrl := gomock.NewController(suite.T())
circuit := api.NewMockCircuit(ctrl)
// mock circuit
suite.Require().NoError(config.Circuits().Add(config.NewStaticDevice(config.Named{
Name: "test",
}, api.Circuit(nil))))
// mock meter
m, _ := meter.NewConfigurable(func() (float64, error) {
return 0, nil
})
suite.Require().NoError(config.Meters().Add(config.NewStaticDevice(config.Named{
Name: "grid",
}, api.Meter(m))))
Name: "root",
}, api.Circuit(circuit))))
// mock charger
suite.Require().NoError(config.Chargers().Add(config.NewStaticDevice(config.Named{
Name: "test",
}, api.Charger(nil))))
_, err := configureSite(conf.Site, lps, new(tariff.Tariffs))
lps, err := configureLoadpoints(conf)
suite.Require().NoError(err)
// root circuit
circuit.EXPECT().GetParent().Return(nil)
err = validateCircuits(lps)
suite.Require().Error(err)
suite.Require().Equal("root circuit must not be assigned to loadpoint ", err.Error())
}