diff --git a/build.gradle b/build.gradle index 5b1737c8..23c510a0 100644 --- a/build.gradle +++ b/build.gradle @@ -93,7 +93,7 @@ dependencies { } // ie³ power system data model - implementation('com.github.ie3-institute:PowerSystemDataModel:7.0.0') { + implementation('com.github.ie3-institute:PowerSystemDataModel:8.1.0') { exclude group: 'org.slf4j' exclude group: 'org.apache.logging.log4j' exclude group: 'com.github.ie3-institute' diff --git a/src/main/scala/edu/ie3/osmogrid/guardian/run/SubGridHandling.scala b/src/main/scala/edu/ie3/osmogrid/guardian/run/SubGridHandling.scala index 7279577b..2ccced43 100644 --- a/src/main/scala/edu/ie3/osmogrid/guardian/run/SubGridHandling.scala +++ b/src/main/scala/edu/ie3/osmogrid/guardian/run/SubGridHandling.scala @@ -7,17 +7,17 @@ package edu.ie3.osmogrid.guardian.run import edu.ie3.datamodel.models.input.NodeInput -import edu.ie3.datamodel.models.input.connector._ +import edu.ie3.datamodel.models.input.connector.* import edu.ie3.datamodel.models.input.connector.`type`.{ Transformer2WTypeInput, Transformer3WTypeInput, } -import edu.ie3.datamodel.models.input.container._ +import edu.ie3.datamodel.models.input.container.* import edu.ie3.datamodel.utils.ContainerNodeUpdateUtil import edu.ie3.datamodel.utils.validation.ValidationUtils import edu.ie3.osmogrid.cfg.OsmoGridConfig import edu.ie3.osmogrid.exception.GridException -import edu.ie3.osmogrid.guardian.run.SubGridHandling._ +import edu.ie3.osmogrid.guardian.run.SubGridHandling.* import edu.ie3.osmogrid.io.input.AssetInformation import edu.ie3.osmogrid.io.output.{GridResult, OutputRequest} import org.apache.pekko.actor.typed.ActorRef @@ -26,7 +26,7 @@ import tech.units.indriya.ComparableQuantity import java.util.UUID import javax.measure.quantity.ElectricPotential -import scala.jdk.CollectionConverters._ +import scala.jdk.CollectionConverters.* import scala.util.{Failure, Success, Try} trait SubGridHandling { @@ -202,14 +202,12 @@ object SubGridHandling { val hv = hvGrids.map { grids => if (grids.size == 1 && grids(0).getGridName == "dummyHvGrid") { - val hvNode: NodeInput = grids(0).getRawGrid.getNodes.asScala.toList .sortBy( _.getVoltLvl.getNominalVoltage.getValue.doubleValue() ) .lastOption .getOrElse(throw GridException("No hv node found.")) - ( Map(hvNode.getUuid -> hvNode.copy().subnet(hvOffset).build()), hvOffset + 2, diff --git a/src/main/scala/edu/ie3/osmogrid/guardian/run/run.scala b/src/main/scala/edu/ie3/osmogrid/guardian/run/run.scala index 62070b1f..ce69037b 100644 --- a/src/main/scala/edu/ie3/osmogrid/guardian/run/run.scala +++ b/src/main/scala/edu/ie3/osmogrid/guardian/run/run.scala @@ -105,7 +105,7 @@ private[run] final case class RunGuardianData( msgAdapters: MessageAdapters, ) extends StateData -/** Meta data to keep track of which children already terminated during the +/** Metadata to keep track of which children already terminated during the * coordinated shutdown phase * * @param runId diff --git a/src/main/scala/edu/ie3/osmogrid/mv/MvCoordinator.scala b/src/main/scala/edu/ie3/osmogrid/mv/MvCoordinator.scala index 2012ebcc..e1a6d82b 100644 --- a/src/main/scala/edu/ie3/osmogrid/mv/MvCoordinator.scala +++ b/src/main/scala/edu/ie3/osmogrid/mv/MvCoordinator.scala @@ -10,7 +10,6 @@ import edu.ie3.datamodel.models.input.NodeInput import edu.ie3.datamodel.models.input.container.JointGridContainer import edu.ie3.osmogrid.ActorStopSupportStateless import edu.ie3.osmogrid.cfg.OsmoGridConfig -import edu.ie3.osmogrid.guardian.run.RunGuardian import edu.ie3.osmogrid.io.input.{InputDataEvent, ReqAssetTypes} import edu.ie3.osmogrid.mv.MvMessageAdapters.WrappedInputResponse import org.apache.pekko.actor.typed.scaladsl.{ActorContext, Behaviors} diff --git a/src/main/scala/utils/GridContainerUtils.scala b/src/main/scala/utils/GridContainerUtils.scala index 55641132..6abc9d39 100644 --- a/src/main/scala/utils/GridContainerUtils.scala +++ b/src/main/scala/utils/GridContainerUtils.scala @@ -6,15 +6,14 @@ package utils +import edu.ie3.datamodel.models.input.container.* import edu.ie3.datamodel.models.input.{AssetInput, NodeInput} -import edu.ie3.datamodel.models.input.container._ -import edu.ie3.datamodel.models.voltagelevels.VoltageLevel import edu.ie3.osmogrid.cfg.OsmoGridConfig.Voltage import edu.ie3.osmogrid.guardian.run.RunGuardian import tech.units.indriya.ComparableQuantity import javax.measure.quantity.ElectricPotential -import scala.jdk.CollectionConverters._ +import scala.jdk.CollectionConverters.* object GridContainerUtils { private val cfg: Voltage = RunGuardian.getVoltageConfig diff --git a/src/test/scala/edu/ie3/osmogrid/guardian/run/RunGuardianSpec.scala b/src/test/scala/edu/ie3/osmogrid/guardian/run/RunGuardianSpec.scala index f87640b0..36b6229c 100644 --- a/src/test/scala/edu/ie3/osmogrid/guardian/run/RunGuardianSpec.scala +++ b/src/test/scala/edu/ie3/osmogrid/guardian/run/RunGuardianSpec.scala @@ -220,11 +220,28 @@ class RunGuardianSpec extends ScalaTestWithActorTestKit with UnitSpec { ) } - "handle all received grid results" in { - runningTestKit.run(HandleGridResults) + "handle all received grid results" in new GridSupport { + val lvGrids: Seq[SubGridContainer] = Seq(mockSubGrid(1)) + val mvGrids: Seq[SubGridContainer] = Seq(mockSubGrid(3)) + val streetGraph: OsmGraph = new OsmGraph() - /* Result is forwarded to listener */ - resultListener.expectMessageType[GridResult] + // LV first + runningTestKit.run( + MessageAdapters.WrappedLvCoordinatorResponse( + RepLvGrids(lvGrids, streetGraph) + ) + ) + + // MV + runningTestKit.run( + MessageAdapters.WrappedMvCoordinatorResponse( + RepMvGrids(mvGrids, None, Map.empty, assetInformation) + ) + ) + + runningTestKit.run(HandleGridResults) + val grid = resultListener.expectMessageType[GridResult] + grid.grid.getRawGrid.getNodes.size() shouldBe 2 } "being in stopping state without a LvCoordinator" should { diff --git a/src/test/scala/edu/ie3/osmogrid/guardian/run/SubGridHandlingSpec.scala b/src/test/scala/edu/ie3/osmogrid/guardian/run/SubGridHandlingSpec.scala index e90e6a09..891602c5 100644 --- a/src/test/scala/edu/ie3/osmogrid/guardian/run/SubGridHandlingSpec.scala +++ b/src/test/scala/edu/ie3/osmogrid/guardian/run/SubGridHandlingSpec.scala @@ -20,7 +20,7 @@ import edu.ie3.datamodel.models.input.container.{ import edu.ie3.datamodel.models.input.graphics.GraphicInput import edu.ie3.datamodel.models.input.system.SystemParticipantInput import edu.ie3.datamodel.models.input.{AssetInput, NodeInput} -import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils._ +import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils.* import edu.ie3.osmogrid.cfg.{OsmoGridConfig, OsmoGridConfigFactory} import edu.ie3.osmogrid.exception.GridException import edu.ie3.osmogrid.io.output.{OutputRequest, ResultListenerProtocol} @@ -35,7 +35,7 @@ import org.slf4j.{Logger, LoggerFactory} import tech.units.indriya.quantity.Quantities import java.util.UUID -import scala.jdk.CollectionConverters._ +import scala.jdk.CollectionConverters.* import scala.util.{Failure, Success, Try} class SubGridHandlingSpec @@ -113,11 +113,12 @@ class SubGridHandlingSpec "process and update lv results correctly" in { val lv = mockSubGrid(1, MV_10KV, LV) - val commonNode = lv.getRawGrid.getNodes.asScala - .filter(_.isSlack) + val commonNode = lv.getRawGrid.getTransformer2Ws.asScala .toSeq(0) + .getNodeA .copy() .slack(false) + .subnet(3) .build() val mv = new SubGridContainer( diff --git a/src/test/scala/edu/ie3/osmogrid/io/input/InputDataProviderIT.scala b/src/test/scala/edu/ie3/osmogrid/io/input/InputDataProviderIT.scala index 5eaaf16f..a8d3773d 100644 --- a/src/test/scala/edu/ie3/osmogrid/io/input/InputDataProviderIT.scala +++ b/src/test/scala/edu/ie3/osmogrid/io/input/InputDataProviderIT.scala @@ -186,8 +186,12 @@ class InputDataProviderIT extends UnitSpec with InputDataCheck { ) match { case AssetReadFailed(exception) => exception.getClass shouldBe classOf[SourceException] - exception.getMessage shouldBe s"edu.ie3.datamodel.exceptions.FailureException: 1 exception(s) occurred within \"Transformer2WTypeInput\" data, one is: " + - s"edu.ie3.datamodel.exceptions.FactoryException: An error occurred when creating instance of Transformer2WTypeInput.class." + exception.getMessage should startWith( + "1 exception(s) occurred within \"Transformer2WTypeInput\" data:" + ) + exception.getMessage should include( + "Field \"uuid\" not found in EntityData" + ) case RepAssetTypes( assetInformation: AssetInformation ) => diff --git a/src/test/scala/edu/ie3/osmogrid/utils/GridContainerUtilsSpec.scala b/src/test/scala/edu/ie3/osmogrid/utils/GridContainerUtilsSpec.scala index 295c1a5f..ea6ebcff 100644 --- a/src/test/scala/edu/ie3/osmogrid/utils/GridContainerUtilsSpec.scala +++ b/src/test/scala/edu/ie3/osmogrid/utils/GridContainerUtilsSpec.scala @@ -13,13 +13,13 @@ import edu.ie3.datamodel.models.input.container.{ SystemParticipants, } import edu.ie3.datamodel.models.input.{AssetInput, NodeInput} -import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils._ +import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils.* import edu.ie3.osmogrid.guardian.run.RunGuardian import edu.ie3.test.common.{GridSupport, MvTestData, UnitSpec} import utils.GridContainerUtils.combine import utils.{GridContainerUtils, VoltageUtils} -import scala.jdk.CollectionConverters._ +import scala.jdk.CollectionConverters.* class GridContainerUtilsSpec extends UnitSpec with GridSupport with MvTestData { "GridContainerUtils" should { diff --git a/src/test/scala/edu/ie3/test/common/GridSupport.scala b/src/test/scala/edu/ie3/test/common/GridSupport.scala index 80a78700..14215069 100644 --- a/src/test/scala/edu/ie3/test/common/GridSupport.scala +++ b/src/test/scala/edu/ie3/test/common/GridSupport.scala @@ -28,7 +28,7 @@ import edu.ie3.datamodel.models.input.graphics.{ LineGraphicInput, NodeGraphicInput, } -import edu.ie3.datamodel.models.input.system._ +import edu.ie3.datamodel.models.input.system.* import edu.ie3.datamodel.models.input.system.characteristic.{ OlmCharacteristicInput, ReactivePowerCharacteristic, @@ -41,8 +41,8 @@ import edu.ie3.datamodel.models.voltagelevels.{ } import edu.ie3.datamodel.utils.GridAndGeoUtils import edu.ie3.osmogrid.io.input.AssetInformation -import edu.ie3.util.geo.GeoUtils._ -import edu.ie3.util.quantities.PowerSystemUnits._ +import edu.ie3.util.geo.GeoUtils.* +import edu.ie3.util.quantities.PowerSystemUnits.* import edu.ie3.util.quantities.QuantityUtils.* import org.locationtech.jts.geom.Point import org.scalatestplus.mockito.MockitoSugar.mock @@ -51,8 +51,8 @@ import tech.units.indriya.quantity.Quantities import tech.units.indriya.unit.Units.PERCENT import java.util.UUID -import javax.measure.quantity._ -import scala.jdk.CollectionConverters._ +import javax.measure.quantity.* +import scala.jdk.CollectionConverters.* trait GridSupport { val defaultLineTypeLv = new LineTypeInput( @@ -260,12 +260,12 @@ trait GridSupport { // include at least a single node for voltage level determination val dummyNodeA = new NodeInput( UUID.randomUUID(), - s"Dummy nodeA in $subgridNo", + s"Dummy nodeA in ${subgridNo + 1}", Quantities.getQuantity(1.0d, StandardUnits.TARGET_VOLTAGE_MAGNITUDE), true, mock[Point], voltLvlA, - subgridNo, + subgridNo + 1, // NodeA of Transformer needs to have different subgridNo ) val dummyNodeB1 = new NodeInput( @@ -375,21 +375,21 @@ trait GridSupport { val topNode1 = new NodeInput( UUID.randomUUID(), - s"Top node 1 in $subgridNo", + s"Top node 1 in ${subgridNo + 1}", Quantities.getQuantity(1.0d, StandardUnits.TARGET_VOLTAGE_MAGNITUDE), false, mock[Point], GermanVoltageLevelUtils.MV_10KV, - subgridNo, + subgridNo + 1, // NodeB of 3wTransformer needs to have different subgridNo ) val topNode2 = new NodeInput( UUID.randomUUID(), - s"Top node 2 in $subgridNo", + s"Top node 2 in ${subgridNo + 2}", Quantities.getQuantity(1.0d, StandardUnits.TARGET_VOLTAGE_MAGNITUDE), false, mock[Point], GermanVoltageLevelUtils.MV_20KV, - subgridNo, + subgridNo + 2, // NodeB of 3wTransformer needs to have different subgridNo ) val lineInput = new LineInput(