org.scalatest.OneInstancePerTest Scala Examples
The following examples show how to use org.scalatest.OneInstancePerTest.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: HealthCheckRoutingSpec.scala From vinyldns with Apache License 2.0 | 5 votes |
package vinyldns.api.route import akka.http.scaladsl.model.StatusCodes import akka.http.scaladsl.testkit.ScalatestRouteTest import org.mockito.Mockito.doReturn import org.scalatestplus.mockito.MockitoSugar import org.scalatest.OneInstancePerTest import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec import cats.effect._ import vinyldns.core.health.HealthCheck.HealthCheckError import vinyldns.core.health.HealthService class HealthCheckRoutingSpec extends AnyWordSpec with ScalatestRouteTest with HealthCheckRoute with OneInstancePerTest with Matchers with MockitoSugar { val healthService: HealthService = mock[HealthService] "GET on the healthcheck" should { "return OK when all datastores return a positive result" in { doReturn(IO.pure(List())).when(healthService).checkHealth() Get("/health") ~> healthCheckRoute ~> check { status shouldBe StatusCodes.OK } } "return a 500 when the zone manager returns any error" in { val err = HealthCheckError("an error!") doReturn(IO.pure(List(err))).when(healthService).checkHealth() Get("/health") ~> healthCheckRoute ~> check { status shouldBe StatusCodes.InternalServerError } } } }
Example 2
Source File: SparkApplicationTester.scala From TopNotch with Apache License 2.0 | 5 votes |
package com.bfm.topnotch import org.scalatest.OneInstancePerTest import org.apache.hadoop.hbase.CellUtil import org.apache.hadoop.hbase.client.{HConnection, HTableInterface, Put} import org.apache.spark._ import org.apache.spark.sql.SparkSession import org.scalamock.scalatest.MockFactory import org.scalatest.FlatSpec import com.typesafe.scalalogging.StrictLogging /** * This class handles some of the boilerplate of testing SparkApplications with HBase writers */ abstract class SparkApplicationTester extends FlatSpec with OneInstancePerTest with MockFactory with StrictLogging with SharedSparkContext { protected val hconn = mock[HConnection] lazy val spark = SparkSession .builder() .appName(getClass.getName) .master("local") .config("spark.sql.shuffle.partitions", "4") //setting this to false to emulate HiveQL's case insensitivity for column names .config("spark.sql.caseSensitive", "false") .getOrCreate() /** * Verify that the next HTable will receive the correct puts. Call this once per HTable that is supposed to be created and written to. * Note: All HBase tests for a SparkApplication object must be run sequentially in order for us to keep track of HTableInterface mocks * @param tests The test's expected name for the HTable and expected values for the Put objects placed in the HTable * @param acceptAnyPut Tells the mock to accept any put value. This is useful for tests using the mock and but not * testing what is put inside it. */ def setHBaseMock(tests: HTableParams, acceptAnyPut: Boolean = false): Unit = { val table = mock[HTableInterface] inSequence { (hconn.getTable(_: String)).expects(tests.tableName).returning(table) inAnyOrder { for (correctPut <- tests.puts) { if (acceptAnyPut) { (table.put(_: Put)).expects(*) } else { (table.put(_: Put)).expects(where { (actualPut: Put) => val actualValue = CellUtil.cloneValue(actualPut.get(correctPut.columnFamily, correctPut.columnQualifier).get(0)) correctPut.valueTest(actualValue) // just return true, as if issues, will have exception thrown by value test true }) } } } (table.close _).expects().returns() } } /** * Set the next HTable will accept anything accept anything. This is useful if testing a thing that needs an hbase * table, but the specific test isn't testing the hbase functionality. * * @param tableName the name of the table that will be accessed. */ def allowAnyHBaseActions(tableName: String): Unit ={ setHBaseMock(new HTableParams(tableName, Seq(null)), true) } /** * The set of parameters defining what values should be used to create the HTable * @param tableName The name of the table the test expects to be created * @param puts The list of parameters for the puts that the test expects to be placed in the table */ case class HTableParams( tableName: String, puts: Seq[HPutParams] ) /** * The list of values that the test expects to be in a put. * @param row The name of the row to put into HBase * @param columnFamily The cell's column family * @param columnQualifier The cell's column qualifier * @param correctString A string representing the correct value or an error message * @param valueTest The method for checking if the value in the cell is correct. Done as the actual and intended values * in a cell may be equal even if they don't have the expression as an array of bytes. * This should throw an exception on failure, using a call like shouldBe */ case class HPutParams( row: Array[Byte], columnFamily: Array[Byte], columnQualifier: Array[Byte], correctString: String, valueTest: Array[Byte] => Unit ) }
Example 3
Source File: InstanceStoppingSpec.scala From sbt-docker-compose with BSD 3-Clause "New" or "Revised" License | 5 votes |
import com.tapad.docker.{ DockerComposePluginLocal, RunningInstanceInfo } import org.mockito.Matchers._ import org.mockito.Mockito._ import org.scalatest.{ BeforeAndAfter, FunSuite, OneInstancePerTest } class InstanceStoppingSpec extends FunSuite with BeforeAndAfter with OneInstancePerTest with MockHelpers { test("Validate the proper stopping of a single instance when only one instance is running and no specific instances are passed in as arguments") { val instanceId = "instanceId" val composePath = "path" val serviceName = "service" val composeMock = spy(new DockerComposePluginLocal) val instance = RunningInstanceInfo(instanceId, serviceName, composePath, List.empty) mockDockerCommandCalls(composeMock) mockSystemSettings(composeMock, serviceName, Some(List(instance))) composeMock.stopRunningInstances(null, Seq.empty) //Validate that the instance was stopped and cleaned up verify(composeMock, times(1)).dockerComposeStopInstance(instanceId, composePath) verify(composeMock, times(1)).dockerComposeRemoveContainers(instanceId, composePath) } test("Validate the proper stopping of a multiple instances when no specific instances are passed in as arguments") { val instanceId = "instanceId" val composePath = "path" val serviceName = "service" val composeMock = spy(new DockerComposePluginLocal) val instance = RunningInstanceInfo(instanceId, serviceName, composePath, List.empty) val instance2 = RunningInstanceInfo("instanceId2", serviceName, composePath, List.empty) mockDockerCommandCalls(composeMock) mockSystemSettings(composeMock, serviceName, Some(List(instance, instance2))) composeMock.stopRunningInstances(null, Seq.empty) //Validate that the instance was stopped and cleaned up verify(composeMock, times(2)).dockerComposeStopInstance(anyString, anyString) verify(composeMock, times(2)).dockerComposeRemoveContainers(anyString, anyString) } test("Validate the proper stopping of a single instance when multiple instances are running") { val instanceIdStop = "instanceIdStop" val instanceIdKeep = "instanceIdKeep" val serviceName = "service" val composePath = "path" val composeMock = spy(new DockerComposePluginLocal) val instanceStop = RunningInstanceInfo(instanceIdStop, serviceName, composePath, List.empty) val instanceKeep = RunningInstanceInfo(instanceIdKeep, serviceName, composePath, List.empty) mockDockerCommandCalls(composeMock) mockSystemSettings(composeMock, serviceName, Some(List(instanceStop, instanceKeep))) composeMock.stopRunningInstances(null, Seq(instanceIdStop)) //Validate that only once instance was Stopped and Removed verify(composeMock, times(1)).setAttribute(any, any)(any[sbt.State]) verify(composeMock, times(1)).dockerComposeStopInstance(anyString, anyString) verify(composeMock, times(1)).dockerComposeRemoveContainers(anyString, anyString) } test("Validate that only instances from the current SBT project are stopped when no arguments are supplied to DockerComposeStop") { val composeMock = spy(new DockerComposePluginLocal) val serviceName = "matchingservice" val instance1 = RunningInstanceInfo("instanceName1", serviceName, "path", List.empty) val instance2 = RunningInstanceInfo("instanceName2", serviceName, "path", List.empty) val instance3 = RunningInstanceInfo("instanceName3", "nonSbtProjectService", "path", List.empty) mockDockerCommandCalls(composeMock) mockSystemSettings(composeMock, serviceName, Some(List(instance1, instance2, instance3))) composeMock.stopRunningInstances(null, Seq.empty) //Validate that only once instance was Stopped and Removed verify(composeMock, times(1)).setAttribute(any, any)(any[sbt.State]) verify(composeMock, times(2)).dockerComposeStopInstance(anyString, anyString) verify(composeMock, times(2)).dockerComposeRemoveContainers(anyString, anyString) } test("Validate that instances from any SBT project can be stopped when explicitly passed to DockerComposeStop") { val composeMock = spy(new DockerComposePluginLocal) val serviceName = "matchingservice" val instance1 = RunningInstanceInfo("instanceName1", serviceName, "path", List.empty) val instance2 = RunningInstanceInfo("instanceName2", serviceName, "path", List.empty) val instance3 = RunningInstanceInfo("instanceName3", "nonSbtProjectService", "path", List.empty) mockDockerCommandCalls(composeMock) mockSystemSettings(composeMock, serviceName, Some(List(instance1, instance2, instance3))) composeMock.stopRunningInstances(null, Seq("instanceName3")) //Validate that only once instance was Stopped and Removed verify(composeMock, times(1)).setAttribute(any, any)(any[sbt.State]) verify(composeMock, times(1)).dockerComposeStopInstance(anyString, anyString) verify(composeMock, times(1)).dockerComposeRemoveContainers(anyString, anyString) } }
Example 4
Source File: VersionSpec.scala From sbt-docker-compose with BSD 3-Clause "New" or "Revised" License | 5 votes |
import com.tapad.docker.Version import org.scalatest.{ BeforeAndAfter, FunSuite, OneInstancePerTest } class VersionSpec extends FunSuite with BeforeAndAfter with OneInstancePerTest with MockHelpers { test("Validate version information is parsed correctly") { assert(Version.parseVersion("1.0.0") == Version(1, 0, 0)) assert(Version.parseVersion("11.1.1") == Version(11, 1, 1)) assert(Version.parseVersion("1.0.0-SNAPSHOT") == Version(1, 0, 0)) assert(Version.parseVersion("1.2.3") == Version(1, 2, 3)) assert(Version.parseVersion("1.2.3-rc3") == Version(1, 2, 3)) assert(Version.parseVersion("1.2.3rc3") == Version(1, 2, 3)) } test("Validate invalid version information reports an exception") { intercept[RuntimeException] { Version.parseVersion("") } intercept[RuntimeException] { Version.parseVersion("1.0") } intercept[RuntimeException] { Version.parseVersion("-1.0") } intercept[RuntimeException] { Version.parseVersion("version") } } }
Example 5
Source File: ComposeInstancesSpec.scala From sbt-docker-compose with BSD 3-Clause "New" or "Revised" License | 5 votes |
import sbt._ import com.tapad.docker.{ DockerComposePluginLocal, RunningInstanceInfo, Version } import org.mockito.Matchers._ import org.mockito.Mockito._ import org.scalatest.{ BeforeAndAfter, FunSuite, OneInstancePerTest } class ComposeInstancesSpec extends FunSuite with BeforeAndAfter with OneInstancePerTest with MockHelpers { test("Validate that no instances are printed when none are running") { val composeMock = spy(new DockerComposePluginLocal) val serviceName = "matchingservice" mockDockerCommandCalls(composeMock) mockSystemSettings(composeMock, serviceName, None) composeMock.printDockerComposeInstances(null, null) verify(composeMock, times(0)).printMappedPortInformation(any[State], any[RunningInstanceInfo], any[Version]) } test("Validate that multiple instances across sbt projects are printed when they are running") { val composeMock = spy(new DockerComposePluginLocal) val serviceName = "matchingservice" val instance1 = RunningInstanceInfo("instanceName1", serviceName, "path", List.empty) val instance2 = RunningInstanceInfo("instanceName2", serviceName, "path", List.empty) val instance3 = RunningInstanceInfo("instanceName3", "nonSbtProjectService", "path", List.empty) mockDockerCommandCalls(composeMock) mockSystemSettings(composeMock, serviceName, Some(List(instance1, instance2, instance3))) composeMock.printDockerComposeInstances(null, null) verify(composeMock, times(3)).printMappedPortInformation(any[State], any[RunningInstanceInfo], any[Version]) } }
Example 6
Source File: TagProcessingSpec.scala From sbt-docker-compose with BSD 3-Clause "New" or "Revised" License | 5 votes |
import com.tapad.docker.DockerComposePlugin._ import org.scalatest.{ BeforeAndAfter, FunSuite, OneInstancePerTest } class TagProcessingSpec extends FunSuite with BeforeAndAfter with OneInstancePerTest { val imageNoTag = "testImage" val imageLatestTag = "testImage:latest" val imageWithTag = "testImage:tag" val imagePrivateRegistryNoTag = "registry/testImage" val imagePrivateRegistryWithLatest = "registry/testImage:latest" val imagePrivateRegistryWithTag = "registry/testImage:tag" val imagePrivateRegistryWithOrgNoTag = "registry/org/testImage" val imagePrivateRegistryWithOrgWithTag = "registry/org/testImage:tag" val imageCustomTag = "testImage<localbuild>" val imageTagAndCustomTag = "testImage:latest<localbuild>" // Boundary val badImageWithColon = "testImage:" val badImageWithMultipleColon = "testImage:fooImage:latest" val badImageWithOnlyColon = ":::::::" test("Validate various image tag formats are properly replaced") { val replacementTag = "replaceTag" assert(replaceDefinedVersionTag(imageNoTag, replacementTag) == imageNoTag) assert(replaceDefinedVersionTag(imageLatestTag, replacementTag) == imageLatestTag) assert(replaceDefinedVersionTag(imageWithTag, replacementTag) == s"testImage:$replacementTag") assert(replaceDefinedVersionTag(imagePrivateRegistryNoTag, replacementTag) == imagePrivateRegistryNoTag) assert(replaceDefinedVersionTag(imagePrivateRegistryWithLatest, replacementTag) == imagePrivateRegistryWithLatest) assert(replaceDefinedVersionTag(imagePrivateRegistryWithTag, replacementTag) == s"registry/testImage:$replacementTag") } test("Validate image tag retrieval from various formats") { assert(getTagFromImage(imageNoTag) == "latest") assert(getTagFromImage(imageLatestTag) == "latest") assert(getTagFromImage(imageWithTag) == "tag") assert(getTagFromImage(imagePrivateRegistryNoTag) == "latest") assert(getTagFromImage(imagePrivateRegistryWithLatest) == "latest") assert(getTagFromImage(imagePrivateRegistryWithTag) == "tag") } test("Validate custom tags get removed") { assert(processImageTag(null, null, imageCustomTag) == "testImage") assert(processImageTag(null, null, imageTagAndCustomTag) == "testImage:latest") } test("Validate the removal of a tag from various image formats") { assert(getImageNameOnly(imageNoTag) == imageNoTag) assert(getImageNameOnly(imageLatestTag) == "testImage") assert(getImageNameOnly(imagePrivateRegistryNoTag) == "testImage") assert(getImageNameOnly(imagePrivateRegistryWithLatest) == "testImage") assert(getImageNameOnly(imagePrivateRegistryWithTag) == "testImage") assert(getImageNameOnly(imagePrivateRegistryWithOrgWithTag) == "testImage") assert(getImageNameOnly(imagePrivateRegistryWithOrgWithTag, removeOrganization = false) == "org/testImage") } test("Validate getting image name with no tag") { assert(getImageNoTag("") == "") assert(getImageNoTag(imageNoTag) == imageNoTag) assert(getImageNoTag(imageLatestTag) == imageNoTag) assert(getImageNoTag(imagePrivateRegistryNoTag) == imagePrivateRegistryNoTag) assert(getImageNoTag(imagePrivateRegistryWithLatest) == imagePrivateRegistryNoTag) assert(getImageNoTag(imagePrivateRegistryWithTag) == imagePrivateRegistryNoTag) assert(getImageNoTag(imagePrivateRegistryWithOrgWithTag) == imagePrivateRegistryWithOrgNoTag) assert(getImageNoTag(badImageWithColon) == imageNoTag) assert(getImageNoTag(badImageWithMultipleColon) == badImageWithMultipleColon.split(":").dropRight(1).mkString(":")) assert(getImageNoTag(badImageWithOnlyColon) == badImageWithOnlyColon.dropRight(1)) } }
Example 7
Source File: ImagePullingSpec.scala From sbt-docker-compose with BSD 3-Clause "New" or "Revised" License | 5 votes |
import com.tapad.docker.DockerComposePlugin._ import com.tapad.docker.{ ServiceInfo, DockerComposePluginLocal } import org.mockito.Mockito._ import org.scalatest.{ OneInstancePerTest, BeforeAndAfter, FunSuite } class ImagePullingSpec extends FunSuite with BeforeAndAfter with OneInstancePerTest { test("Validate that when the 'skipPull' argument is passed in no imaged are pull from the Docker registry") { val instanceMock = new DockerComposePluginLocal with MockOutput instanceMock.pullDockerImages(Seq(skipPullArg), null, suppressColor = false) assert(instanceMock.messages.exists(_.contains("Skipping Docker Repository Pull for all images."))) } test("Validate that images with a 'build' source not pulled from the Docker registry") { val instanceMock = new DockerComposePluginLocal with MockOutput val imageName = "buildImageName" val serviceInfo = ServiceInfo("serviceName", imageName, buildImageSource, null) instanceMock.pullDockerImages(null, List(serviceInfo), suppressColor = false) assert(instanceMock.messages.contains(s"Skipping Pull of image: $imageName")) } test("Validate that images with a 'defined' source are pulled from the Docker registry") { val instanceMock = spy(new DockerComposePluginLocal) val imageName = "buildImageName" val serviceInfo = ServiceInfo("serviceName", imageName, definedImageSource, null) doNothing().when(instanceMock).dockerPull(imageName) instanceMock.pullDockerImages(null, List(serviceInfo), suppressColor = false) verify(instanceMock, times(1)).dockerPull(imageName) } test("Validate that images with a 'cache' source are not pulled from the Docker registry") { val instanceMock = new DockerComposePluginLocal with MockOutput val imageName = "cacheImageName" val serviceInfo = ServiceInfo("serviceName", imageName, cachedImageSource, null) instanceMock.pullDockerImages(null, List(serviceInfo), suppressColor = false) assert(instanceMock.messages.contains(s"Skipping Pull of image: $imageName")) } }
Example 8
Source File: InstancePersistenceSpec.scala From sbt-docker-compose with BSD 3-Clause "New" or "Revised" License | 5 votes |
import com.tapad.docker.{ RunningInstanceInfo, DockerComposePluginLocal } import com.tapad.docker.DockerComposeKeys._ import org.mockito.Mockito._ import org.scalatest.mockito.MockitoSugar import org.scalatest.{ BeforeAndAfter, FunSuite, OneInstancePerTest } class InstancePersistenceSpec extends FunSuite with BeforeAndAfter with OneInstancePerTest with MockitoSugar { test("Validate that only running instances from this sbt session are returned") { val instanceMock = spy(new DockerComposePluginLocal) val runningInstanceMatch = RunningInstanceInfo("instanceNameMatch", "matchingservice", "composePath", List.empty) val runningInstanceNoMatch = RunningInstanceInfo("instanceNameNoMatch", "nomatchingservice", "composePath", List.empty) doReturn("matchingservice").when(instanceMock).getSetting(composeServiceName)(null) doReturn(Option(List(runningInstanceMatch, runningInstanceNoMatch))).when(instanceMock).getAttribute(runningInstances)(null) val instanceIds = instanceMock.getServiceRunningInstanceIds(null) assert(instanceIds.size == 1) assert(instanceIds.contains("instanceNameMatch")) } test("Validate that only matching instance ids are returned") { val instanceMock = spy(new DockerComposePluginLocal) val runningInstanceMatch = RunningInstanceInfo("instanceNameMatch", "matchingservice", "composePath", List.empty) val runningInstanceNoMatch = RunningInstanceInfo("instanceNameNoMatch", "nomatchingservice", "composePath", List.empty) doReturn("matchingservice").when(instanceMock).getSetting(composeServiceName)(null) doReturn(Option(List(runningInstanceMatch, runningInstanceNoMatch))).when(instanceMock).getAttribute(runningInstances)(null) val instance = instanceMock.getMatchingRunningInstance(null, Seq("instanceNameMatch")) assert(instance.isDefined) assert(instance.get.instanceName == "instanceNameMatch") } }
Example 9
Source File: ImageBuildingSpec.scala From sbt-docker-compose with BSD 3-Clause "New" or "Revised" License | 5 votes |
import com.tapad.docker.DockerComposeKeys._ import com.tapad.docker.DockerComposePlugin._ import com.tapad.docker.DockerComposePluginLocal import org.mockito.Mockito._ import org.scalatest.{ OneInstancePerTest, BeforeAndAfter, FunSuite } class ImageBuildingSpec extends FunSuite with BeforeAndAfter with OneInstancePerTest { test("Validate that a Docker image is built when 'skipBuild' and 'noBuild' are not set") { val composeMock = spy(new DockerComposePluginLocal) doReturn(false).when(composeMock).getSetting(suppressColorFormatting)(null) doReturn(false).when(composeMock).getSetting(composeNoBuild)(null) doNothing().when(composeMock).buildDockerImageTask(null) composeMock.buildDockerImage(null, null) verify(composeMock, times(1)).buildDockerImageTask(null) } test("Validate that a Docker image is not built when 'skipBuild' is passed as an argument") { val composeMock = spy(new DockerComposePluginLocal) doReturn(false).when(composeMock).getSetting(suppressColorFormatting)(null) doReturn(false).when(composeMock).getSetting(composeNoBuild)(null) doNothing().when(composeMock).buildDockerImageTask(null) composeMock.buildDockerImage(null, Seq(skipBuildArg)) verify(composeMock, times(0)).buildDockerImageTask(null) } test("Validate that a Docker image is not built when the 'noBuild' setting is true") { val composeMock = spy(new DockerComposePluginLocal) doReturn(false).when(composeMock).getSetting(suppressColorFormatting)(null) doReturn(true).when(composeMock).getSetting(composeNoBuild)(null) doNothing().when(composeMock).buildDockerImageTask(null) composeMock.buildDockerImage(null, null) verify(composeMock, times(0)).buildDockerImageTask(null) } }
Example 10
Source File: ImplicitsSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.plugins import org.apache.toree.plugins.dependencies.Dependency import org.scalatest.{OneInstancePerTest, Matchers, FunSpec} class ImplicitsSpec extends FunSpec with Matchers with OneInstancePerTest { describe("Implicits") { describe("#$dep") { it("should convert values to dependencies with generated names") { import scala.reflect.runtime.universe._ import org.apache.toree.plugins.Implicits._ val value = new Object val d: Dependency[_] = value d.name should not be (empty) d.`type` should be (typeOf[Object]) d.value should be (value) } it("should convert tuples of (string, value) to dependencies with the specified names") { import scala.reflect.runtime.universe._ import org.apache.toree.plugins.Implicits._ val name = "some name" val value = new Object val d: Dependency[_] = name -> value d.name should be (name) d.`type` should be (typeOf[Object]) d.value should be (value) } } } }
Example 11
Source File: NSDbConfigProviderSpec.scala From NSDb with Apache License 2.0 | 5 votes |
package io.radicalbit.nsdb.common.configuration import com.typesafe.config.{Config, ConfigFactory} import org.scalatest.{FlatSpec, Matchers, OneInstancePerTest} import NSDbConfig.LowLevel._ import NSDbConfig.HighLevel._ class NSDbConfigProviderSpec extends FlatSpec with Matchers with OneInstancePerTest with NSDbConfigProvider { override def userDefinedConfig: Config = ConfigFactory.parseResources("nsdb-test.conf").resolve() override def lowLevelTemplateConfig: Config = ConfigFactory.parseResources("application-test.conf") "NSDbConfigProvider" should "properly merge configuration files" in { val c1 = ConfigFactory.parseString(""" |p1 = "a" |p2 = "b" |""".stripMargin) val c2 = ConfigFactory.parseString( """ |p2= "b" |p3 = "d" |""".stripMargin ) val mergedConf = mergeConf(c1, c2) mergedConf.getString("p1") shouldBe "a" mergedConf.getString("p2") shouldBe "b" mergedConf.getString("p3") shouldBe "d" } "NSDbConfigProvider" should "properly populate a low level conf" in { config.getValue(AkkaArteryHostName) shouldBe userDefinedConfig.getValue(NSDbNodeHostName) config.getValue(AkkaArteryPort) shouldBe userDefinedConfig.getValue(NSDbNodePort) config.getValue(AkkaDDPersistenceDir) shouldBe userDefinedConfig.getValue(NSDBMetadataPath) config.getValue(AkkaDiscoveryNSDbEndpoints) shouldBe userDefinedConfig.getValue(NSDbClusterEndpoints) config.hasPath(AkkaManagementContactPointNr) shouldBe false } }
Example 12
Source File: JeroMQSocketSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.communication.socket import org.mockito.invocation.InvocationOnMock import org.mockito.stubbing.Answer import org.scalatest.{Matchers, BeforeAndAfter, OneInstancePerTest, FunSpec} import org.scalatest.mock.MockitoSugar import org.mockito.Mockito._ import org.zeromq.ZMsg class JeroMQSocketSpec extends FunSpec with MockitoSugar with OneInstancePerTest with BeforeAndAfter with Matchers { private val runnable = mock[ZeroMQSocketRunnable] @volatile private var running = true // Mock the running of the runnable for the tests doAnswer(new Answer[Unit] { override def answer(invocation: InvocationOnMock): Unit = while (running) { Thread.sleep(1) } }).when(runnable).run() // Mock the close of the runnable to shutdown doAnswer(new Answer[Unit] { override def answer(invocation: InvocationOnMock): Unit = running = false }).when(runnable).close() private val socket: JeroMQSocket = new JeroMQSocket(runnable) after { running = false } describe("JeroMQSocket") { describe("#send") { it("should offer a message to the runnable") { val message: String = "Some Message" val expected = ZMsg.newStringMsg(message) socket.send(message.getBytes) verify(runnable).offer(expected) } it("should thrown and AssertionError when socket is no longer alive") { socket.close() intercept[AssertionError] { socket.send("".getBytes) } } } describe("#close") { it("should close the runnable") { socket.close() verify(runnable).close() } it("should close the socket thread") { socket.close() socket.isAlive should be (false) } } describe("#isAlive") { it("should evaluate to true when the socket thread is alive") { socket.isAlive should be (true) } it("should evaluate to false when the socket thread is dead") { socket.close() socket.isAlive should be (false) } } } }
Example 13
Source File: CoursierDependencyDownloaderSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.dependencies import java.net.URL import java.nio.file.Files import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} class CoursierDependencyDownloaderSpec extends FunSpec with Matchers with OneInstancePerTest { private val coursierDependencyDownloader = new CoursierDependencyDownloader describe("CoursierDependencyDownloader") { describe("#addMavenRepository") { it("should add to the list of repositories") { val repo = new URL("http://some-repo.com") coursierDependencyDownloader.addMavenRepository(repo, None) val repos = coursierDependencyDownloader.getRepositories repos should contain (repo.toURI) } } describe("#removeMavenRepository") { it("should remove from the list of repositories") { val repo = new URL("http://some-repo.com") coursierDependencyDownloader.addMavenRepository(repo, None) coursierDependencyDownloader.removeMavenRepository(repo) val repos = coursierDependencyDownloader.getRepositories repos should not contain (repo.toURI) } } describe("#setDownloadDirectory") { it("should set the new download directory if valid") { val validDir = Files.createTempDirectory("tmpdir").toFile validDir.deleteOnExit() val result = coursierDependencyDownloader.setDownloadDirectory(validDir) result should be (true) val dir = coursierDependencyDownloader.getDownloadDirectory dir should be (validDir.getAbsolutePath) } it("should not change the directory if given a file") { val invalidDir = Files.createTempFile("tmp", "file").toFile invalidDir.deleteOnExit() val result = coursierDependencyDownloader.setDownloadDirectory(invalidDir) result should be (false) val dir = coursierDependencyDownloader.getDownloadDirectory dir should not be (invalidDir.getAbsolutePath) } it("should support creating missing directories") { val baseDir = Files.createTempDirectory("tmpdir").toFile val validDir = baseDir.toPath.resolve("otherdir").toFile validDir.deleteOnExit() baseDir.deleteOnExit() val result = coursierDependencyDownloader.setDownloadDirectory(validDir) result should be (true) val dir = coursierDependencyDownloader.getDownloadDirectory dir should be (validDir.getAbsolutePath) } } describe("#getRepositories") { it("should have the default repositories") { val expected = Seq(DependencyDownloader.DefaultMavenRepository.toURI) val actual = coursierDependencyDownloader.getRepositories actual should be (expected) } } describe("#getDownloadDirectory") { it("should have the default download directory") { val expected = DependencyDownloader.DefaultDownloadDirectory.getAbsolutePath val actual = coursierDependencyDownloader.getDownloadDirectory actual should be (expected) } } } }
Example 14
Source File: BrokerTransformerSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.interpreter.broker import org.apache.toree.interpreter.{ExecuteError, Results} import org.scalatest.concurrent.Eventually import scala.concurrent.Promise import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} class BrokerTransformerSpec extends FunSpec with Matchers with OneInstancePerTest with Eventually { private val brokerTransformer = new BrokerTransformer describe("BrokerTransformer") { describe("#transformToInterpreterResult") { it("should convert to success with result output if no failure") { val codeResultPromise = Promise[BrokerTypes.CodeResults]() val transformedFuture = brokerTransformer.transformToInterpreterResult( codeResultPromise.future ) val successOutput = "some success" codeResultPromise.success(successOutput) eventually { val result = transformedFuture.value.get.get result should be((Results.Success, Left(Map("text/plain" -> successOutput)))) } } it("should convert to error with broker exception if failure") { val codeResultPromise = Promise[BrokerTypes.CodeResults]() val transformedFuture = brokerTransformer.transformToInterpreterResult( codeResultPromise.future ) val failureException = new BrokerException("some failure") codeResultPromise.failure(failureException) eventually { val result = transformedFuture.value.get.get result should be((Results.Error, Right(ExecuteError( name = failureException.getClass.getName, value = failureException.getLocalizedMessage, stackTrace = failureException.getStackTrace.map(_.toString).toList )))) } } } } }
Example 15
Source File: BrokerProcessHandlerSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.interpreter.broker import org.apache.commons.exec.ExecuteException import org.scalatest.mock.MockitoSugar import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} import org.mockito.Mockito._ import org.mockito.Matchers._ class BrokerProcessHandlerSpec extends FunSpec with Matchers with OneInstancePerTest with MockitoSugar { private val mockBrokerBridge = mock[BrokerBridge] private val brokerProcessHandler = new BrokerProcessHandler( mockBrokerBridge, restartOnFailure = true, restartOnCompletion = true ) describe("BrokerProcessHandler") { describe("#onProcessFailed") { it("should invoke the reset method") { val mockResetMethod = mock[String => Unit] brokerProcessHandler.setResetMethod(mockResetMethod) brokerProcessHandler.onProcessFailed(mock[ExecuteException]) verify(mockResetMethod).apply(anyString()) } it("should invoke the restart method if the proper flag is set to true") { val mockRestartMethod = mock[() => Unit] brokerProcessHandler.setRestartMethod(mockRestartMethod) brokerProcessHandler.onProcessFailed(mock[ExecuteException]) verify(mockRestartMethod).apply() } } describe("#onProcessComplete") { it("should invoke the reset method") { val mockResetMethod = mock[String => Unit] brokerProcessHandler.setResetMethod(mockResetMethod) brokerProcessHandler.onProcessComplete(0) verify(mockResetMethod).apply(anyString()) } it("should invoke the restart method if the proper flag is set to true") { val mockRestartMethod = mock[() => Unit] brokerProcessHandler.setRestartMethod(mockRestartMethod) brokerProcessHandler.onProcessComplete(0) verify(mockRestartMethod).apply() } } } }
Example 16
Source File: BrokerBridgeSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.interpreter.broker import org.apache.toree.kernel.api.KernelLike import org.scalatest.mock.MockitoSugar import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} class BrokerBridgeSpec extends FunSpec with Matchers with OneInstancePerTest with MockitoSugar { private val mockBrokerState = mock[BrokerState] private val mockKernel = mock[KernelLike] private val brokerBridge = new BrokerBridge( mockBrokerState, mockKernel ) describe("BrokerBridge") { describe("#state") { it("should return the broker state from the constructor") { brokerBridge.state should be (mockBrokerState) } } describe("#kernel") { it("should return the kernel from the constructor") { brokerBridge.kernel should be (mockKernel) } } } }
Example 17
Source File: PluginManagerSpecForIntegration.scala From incubator-toree with Apache License 2.0 | 5 votes |
package integration import org.apache.toree.plugins.{PluginManager, Plugin} import org.apache.toree.plugins.annotations.Init import org.scalatest.{OneInstancePerTest, Matchers, FunSpec} class PluginManagerSpecForIntegration extends FunSpec with Matchers with OneInstancePerTest { private val pluginManager = new PluginManager describe("PluginManager") { it("should be able to load and initialize internal plugins") { val plugins = pluginManager.initialize() plugins.map(_.name) should contain allOf ( classOf[NonCircularPlugin].getName, classOf[RegisterPluginA].getName, classOf[ConsumePluginA].getName ) } it("should be able to initialize plugins with dependencies provided by other plugins") { val cpa = pluginManager.loadPlugin("", classOf[ConsumePluginA]).get val rpa = pluginManager.loadPlugin("", classOf[RegisterPluginA]).get val results = pluginManager.initializePlugins(Seq(cpa, rpa)) results.forall(_.isSuccess) should be (true) } it("should fail when plugins have circular dependencies") { val cp = pluginManager.loadPlugin("", classOf[CircularPlugin]).get val results = pluginManager.initializePlugins(Seq(cp)) results.forall(_.isFailure) should be (true) } it("should be able to handle non-circular dependencies within the same plugin") { val ncp = pluginManager.loadPlugin("", classOf[NonCircularPlugin]).get val results = pluginManager.initializePlugins(Seq(ncp)) results.forall(_.isSuccess) should be (true) } } } private class DepA private class DepB private class CircularPlugin extends Plugin { @Init def initMethodA(depA: DepA) = register(new DepB) @Init def initMethodB(depB: DepB) = register(new DepA) } private class NonCircularPlugin extends Plugin { @Init def initMethodB(depB: DepB) = {} @Init def initMethodA(depA: DepA) = register(new DepB) @Init def initMethod() = register(new DepA) } private class RegisterPluginA extends Plugin { @Init def initMethod() = register(new DepA) } private class ConsumePluginA extends Plugin { @Init def initMethod(depA: DepA) = {} }
Example 18
Source File: ImplicitsSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.plugins import org.apache.toree.plugins.dependencies.Dependency import org.scalatest.{OneInstancePerTest, Matchers, FunSpec} class ImplicitsSpec extends FunSpec with Matchers with OneInstancePerTest { describe("Implicits") { describe("#$dep") { it("should convert values to dependencies with generated names") { import scala.reflect.runtime.universe._ import org.apache.toree.plugins.Implicits._ val value = new Object val d: Dependency[_] = value d.name should not be (empty) d.`type` should be (typeOf[Object]) d.value should be (value) } it("should convert tuples of (string, value) to dependencies with the specified names") { import scala.reflect.runtime.universe._ import org.apache.toree.plugins.Implicits._ val name = "some name" val value = new Object val d: Dependency[_] = name -> value d.name should be (name) d.`type` should be (typeOf[Object]) d.value should be (value) } } } }
Example 19
Source File: TraceFriendlyExecutionContextExecutorSpec.scala From money with Apache License 2.0 | 5 votes |
package com.comcast.money.core.concurrent import com.comcast.money.api.SpanId import com.comcast.money.core.SpecHelpers import com.comcast.money.core.internal.SpanLocal import org.mockito.Mockito._ import org.scalatest.mockito.MockitoSugar import org.scalatest.{ BeforeAndAfterEach, Matchers, OneInstancePerTest, WordSpec } import org.slf4j.MDC import scala.concurrent.duration._ import scala.concurrent.{ Await, ExecutionContext, Future } class TraceFriendlyExecutionContextExecutorSpec extends WordSpec with Matchers with MockitoSugar with OneInstancePerTest with ConcurrentSupport with SpecHelpers with BeforeAndAfterEach { import com.comcast.money.core.concurrent.TraceFriendlyExecutionContextExecutor.Implicits.global override def beforeEach() = { SpanLocal.clear() MDC.clear() } // brings in the implicit executor "TraceFriendlyExecutionContext" should { "propagate the current trace local value" in { val originalSpanId = new SpanId("1", 2L, 3L) val originalSpan = testSpan(originalSpanId) SpanLocal.push(originalSpan) val future = Future { SpanLocal.current.get.info.id } val futureResult = Await.result(future, 100 millis) futureResult shouldEqual originalSpanId } "propagate no span value if none is present" in { SpanLocal.clear() val future = Future { SpanLocal.current } val futureResult = Await.result(future, 100 millis) futureResult shouldEqual None } "propagate only the latest span id value" in { val spanId1 = new SpanId() val spanId2 = new SpanId() SpanLocal.push(testSpan(spanId1)) SpanLocal.push(testSpan(spanId2)) val future = Future { SpanLocal.current.get.info.id } val futureResult = Await.result(future, 100 millis) futureResult shouldEqual spanId2 } "delegate reportFailure to the wrapped executor" in { val mockExecutionContext = mock[ExecutionContext] val traceFriendly = TraceFriendlyExecutionContextExecutor(mockExecutionContext) val failure = new IllegalArgumentException() traceFriendly.reportFailure(failure) verify(mockExecutionContext).reportFailure(failure) } "propogate MDC data" in { MDC.put("FINGERPRINT", "print") val future = Future { MDC.get("FINGERPRINT") } MDC.get("FINGERPRINT") shouldEqual "print" Await.result(future, 100 millis) shouldEqual "print" } "Child MDC should not escape to parent " in { val future = Future { MDC.put("FINGERPRINT", "print") MDC.get("FINGERPRINT") } MDC.get("FINGERPRINT") shouldBe null Await.result(future, 100 millis) shouldEqual "print" } } }
Example 20
Source File: FileValidationTest.scala From sbt-org-policies with Apache License 2.0 | 5 votes |
package sbtorgpolicies.rules import cats.instances.list._ import cats.kernel.instances.unit._ import cats.syntax.either._ import cats.syntax.foldable._ import cats.syntax.validated._ import org.scalacheck.Prop._ import sbtorgpolicies.TestOps import sbtorgpolicies.exceptions.{IOException, ValidationException} import sbtorgpolicies.arbitraries.ExceptionArbitraries._ import cats.laws.discipline.arbitrary._ import org.scalatest.OneInstancePerTest import sbtorgpolicies.io.FileReader class FileValidationTest extends TestOps with OneInstancePerTest { val mockFileReader: FileReader = mock[FileReader] val fileValidation: FileValidation = new FileValidation(mockFileReader) test("FileValidation.validateFile works as expected") { val property = forAll { (inputPath: String, content: String, validationResult: ValidationResult) => (mockFileReader.getFileContent _).expects(inputPath).returns(content.asRight) val result = fileValidation.validateFile(inputPath, _ => validationResult) result shouldBeEq validationResult } check(property) } test("FileValidation.validateFile fails when FileReader throws and Exception") { val property = forAll { (inputPath: String, exception: IOException) => (mockFileReader.getFileContent _).expects(inputPath).returns(exception.asLeft[String]) val result = fileValidation.validateFile(inputPath, _ => ().validNel) result shouldBeEq ValidationException(s"Can't read $inputPath", Some(exception)).invalidNel } check(property) } test("FileValidation.validateFile should accumulate the invalid results") { val property = forAll { (inputPath: String, content: String, results: List[ValidationResult]) => (mockFileReader.getFileContent _).expects(inputPath).returns(content.asRight) def validationFunction(result: ValidationResult)(s: String): ValidationResult = result val validations: List[String => ValidationResult] = results.map(validationFunction) val result = fileValidation.validateFile(inputPath, validations: _*) result shouldBeEq results.combineAll } check(property) } }
Example 21
Source File: BlackListTests.scala From EncryCore with GNU General Public License v3.0 | 5 votes |
package encry.network import java.net.{InetAddress, InetSocketAddress} import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import encry.modifiers.InstanceFactory import encry.network.BlackList.BanReason._ import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PeerConnectionHandler.ReceivableMessages.CloseConnection import encry.network.PeersKeeper.BanPeer import encry.settings.TestNetSettings import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import scala.concurrent.duration._ class BlackListTests extends WordSpecLike with Matchers with BeforeAndAfterAll with InstanceFactory with OneInstancePerTest with TestNetSettings { implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() val knowPeersSettings = testNetSettings.copy( network = settings.network.copy( knownPeers = List(new InetSocketAddress("172.16.11.11", 9001)), connectOnlyWithKnownPeers = Some(true) ), blackList = settings.blackList.copy( banTime = 2 seconds, cleanupTime = 3 seconds )) "Peers keeper" should { "handle ban peer message correctly" in { val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, Handshake(protocolToBytes(knowPeersSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) peersKeeper ! BanPeer(connectedPeer, SpamSender) peerHandler.expectMsg(CloseConnection) peersKeeper.underlyingActor.blackList.contains(address.getAddress) shouldBe true } "cleanup black list by scheduler correctly" in { val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, Handshake(protocolToBytes(knowPeersSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) peersKeeper ! BanPeer(connectedPeer, SentPeersMessageWithoutRequest) Thread.sleep(6000) peersKeeper.underlyingActor.blackList.contains(address.getAddress) shouldBe false } "don't remove peer from black list before ban time expired" in { val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, Handshake(protocolToBytes(knowPeersSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) Thread.sleep(4000) peersKeeper ! BanPeer(connectedPeer, CorruptedSerializedBytes) Thread.sleep(2000) peersKeeper.underlyingActor.blackList.contains(address.getAddress) shouldBe true } } }
Example 22
Source File: MemoryPoolTests.scala From EncryCore with GNU General Public License v3.0 | 5 votes |
package encry.view.mempool import akka.actor.ActorSystem import akka.testkit.{ TestActorRef, TestProbe } import com.typesafe.scalalogging.StrictLogging import encry.modifiers.InstanceFactory import encry.settings.{ EncryAppSettings, TestNetSettings } import encry.utils.NetworkTimeProvider import encry.view.mempool.MemoryPool.{ NewTransaction, TransactionsForMiner } import org.scalatest.{ BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike } import scala.concurrent.duration._ class MemoryPoolTests extends WordSpecLike with Matchers with InstanceFactory with BeforeAndAfterAll with OneInstancePerTest with TestNetSettings with StrictLogging { implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(testNetSettings.ntp) "MemoryPool" should { "add new unique transactions" in { val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.map(_.encodedId).forall(transactions.map(_.encodedId).contains) shouldBe true } "reject not unique transactions" in { val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) val (newMempoolAgain, validTxsAgain) = newMempool.validateTransactions(validTxs) newMempoolAgain.size shouldBe 10 validTxsAgain.size shouldBe 0 } "mempoolMaxCapacity works correct" in { val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = genValidPaymentTxs(11) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.size shouldBe 10 } "getTransactionsForMiner works fine" in { val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = (0 until 10).map(k => coinbaseAt(k)) val (newMempool, _) = mempool.validateTransactions(transactions) val (uPool, txs) = newMempool.getTransactionsForMiner uPool.size shouldBe 0 txs.map(_.encodedId).forall(transactions.map(_.encodedId).contains) shouldBe true transactions.map(_.encodedId).forall(txs.map(_.encodedId).contains) shouldBe true } } "Mempool actor" should { "send transactions to miner" in { val miner1 = TestProbe() val mempool1: TestActorRef[MemoryPool] = TestActorRef[MemoryPool](MemoryPool.props(testNetSettings, timeProvider, miner1.ref, Some(TestProbe().ref))) val transactions1 = (0 until 4).map { k => val a = coinbaseAt(k) a } transactions1.foreach(mempool1 ! NewTransaction(_)) mempool1.underlyingActor.memoryPool.size shouldBe 4 logger.info(s"generated: ${transactions1.map(_.encodedId)}") miner1.expectMsg(20.seconds, TransactionsForMiner(transactions1)) } } }
Example 23
Source File: ModifiersValidationTest.scala From EncryCore with GNU General Public License v3.0 | 5 votes |
package encry.view.history import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks import encry.settings.{EncryAppSettings, TestNetSettings} import org.encryfoundation.common.modifiers.history.Block import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} class ModifiersValidationTest extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest with TestNetSettings { "Modifiers validator" should { "validate genesis block" in { val newHistory: History = generateDummyHistory(testNetSettings) val genesisBlock: Block = generateGenesisBlock(testNetSettings.constants.GenesisHeight) newHistory.testApplicable(genesisBlock.header).isRight shouldBe true newHistory.append(genesisBlock.header) val updatedHistory: History = newHistory.reportModifierIsValid(genesisBlock.header) updatedHistory.testApplicable(genesisBlock.payload).isRight shouldBe true } "reject incorrect modifiers" in { val blocks: List[Block] = generateBlocks(2, generateDummyHistory(testNetSettings))._2 val newHistory: History = generateDummyHistory(testNetSettings) blocks.take(1).foldLeft(newHistory) { case (history, block) => history.testApplicable(block.header).isRight shouldBe true history.append(block.header) history.reportModifierIsValid(block.header) history.testApplicable(block.payload).isRight shouldBe true history.append(block.payload) history.reportModifierIsValid(block) } blocks.takeRight(1).foldLeft(newHistory) { case (history, block) => history.testApplicable(block.header).isRight shouldBe false history.append(block.header) history.reportModifierIsValid(block.header) history.testApplicable(block.payload).isRight shouldBe true history.append(block.payload) history.reportModifierIsValid(block) } } } }
Example 24
Source File: TraceLoggingSpec.scala From money with Apache License 2.0 | 5 votes |
package com.comcast.money.core.logging import org.mockito.Mockito._ import org.scalatest.mockito.MockitoSugar import org.scalatest.{ Matchers, OneInstancePerTest, WordSpec } import org.slf4j.Logger class TraceLoggingSpec extends WordSpec with Matchers with MockitoSugar with OneInstancePerTest { val mockLogger = mock[Logger] "TraceLogging" should { "capture exceptions into a log" in { val testTraceLogging = new TraceLogging { override lazy val shouldLogExceptions: Boolean = true override val logger: Logger = mockLogger } val t = mock[Throwable] testTraceLogging.logException(t) verify(mockLogger).error("Tracing exception", t) } "not capture exceptions if log exceptions is not enabled" in { val testTraceLogging = new TraceLogging { override lazy val shouldLogExceptions: Boolean = false override val logger: Logger = mockLogger } val t = mock[Throwable] testTraceLogging.logException(t) verifyZeroInteractions(mockLogger) } } }
Example 25
Source File: MDCSupportSpec.scala From money with Apache License 2.0 | 5 votes |
package com.comcast.money.core.internal import com.comcast.money.api.SpanId import org.scalatest.{ BeforeAndAfterEach, Matchers, OneInstancePerTest, WordSpec } import org.slf4j.MDC import scala.collection.JavaConverters._ import scala.collection.mutable class MDCSupportSpec extends WordSpec with Matchers with BeforeAndAfterEach with OneInstancePerTest { val testMDCSupport = new MDCSupport val spanId = new SpanId() override def beforeEach() = { SpanLocal.clear() } "MDCSupport" should { "set the span in MDC when provide" in { testMDCSupport.setSpanMDC(Some(spanId)) MDC.get("moneyTrace") shouldEqual MDCSupport.format(spanId) } "clear the MDC value when set to None" in { testMDCSupport.setSpanMDC(Some(spanId)) MDC.get("moneyTrace") shouldEqual MDCSupport.format(spanId) testMDCSupport.setSpanMDC(None) MDC.get("moneyTrace") shouldBe null } "not be run if tracing is disabled" in { val disabled = new MDCSupport(false) disabled.setSpanMDC(Some(spanId)) MDC.get("moneyTrace") shouldBe null } "not propogate MDC if disabled" in { val mdcContext: mutable.Map[_, _] = mutable.HashMap("FINGERPRINT" -> "print") val disabled = new MDCSupport(false) disabled.propogateMDC(Some(mdcContext.asJava)) MDC.get("FINGERPRINT") shouldBe null } "propogate MDC if not disabled" in { val mdcContext: mutable.Map[_, _] = mutable.HashMap("FINGERPRINT" -> "print") testMDCSupport.propogateMDC(Some(mdcContext.asJava)) MDC.get("FINGERPRINT") shouldBe "print" } "clear MDC if given an empty context" in { MDC.put("FINGERPRINT", "print") testMDCSupport.propogateMDC(None) MDC.get("FINGERPRINT") shouldBe null } "set span name" in { testMDCSupport.setSpanNameMDC(Some("foo")) MDC.get("spanName") shouldBe "foo" testMDCSupport.getSpanNameMDC shouldBe Some("foo") } "clear span name from MDC when given an empty value" in { MDC.put("spanName", "shouldBeRemoved") testMDCSupport.setSpanNameMDC(None) MDC.get("spanName") shouldBe null testMDCSupport.getSpanNameMDC shouldBe None } } }
Example 26
Source File: SpanLocalSpec.scala From money with Apache License 2.0 | 5 votes |
package com.comcast.money.core.internal import com.comcast.money.api.SpanId import com.comcast.money.core.handlers.TestData import org.scalatest.mockito.MockitoSugar import org.scalatest.{ OneInstancePerTest, BeforeAndAfterEach, Matchers, WordSpec } import org.slf4j.MDC class SpanLocalSpec extends WordSpec with Matchers with OneInstancePerTest with BeforeAndAfterEach with MockitoSugar with TestData { override def afterEach() = { SpanLocal.clear() } "SpanLocal" when { "an item exists in span local" should { "return the span local value" in { SpanLocal.push(testSpan) SpanLocal.current shouldEqual Some(testSpan) } "clear the stored value" in { SpanLocal.push(testSpan) SpanLocal.clear() SpanLocal.current shouldEqual None } "do nothing if trying to push a null value" in { SpanLocal.push(testSpan) SpanLocal.push(null) SpanLocal.current shouldEqual Some(testSpan) } "add to the existing call stack" in { val nested = testSpan.copy(new SpanId()) SpanLocal.push(testSpan) SpanLocal.push(nested) SpanLocal.current shouldEqual Some(nested) } "pop the last added item from the call stack" in { val nested = testSpan.copy(new SpanId()) SpanLocal.push(testSpan) SpanLocal.push(nested) val popped = SpanLocal.pop() popped shouldEqual Some(nested) SpanLocal.current shouldEqual Some(testSpan) } "set the MDC value on push" in { SpanLocal.push(testSpan) MDC.get("moneyTrace") shouldEqual MDCSupport.format(testSpan.id) MDC.get("spanName") shouldEqual testSpan.name } "remove the MDC value on pop" in { SpanLocal.push(testSpan) SpanLocal.pop() MDC.get("moneyTrace") shouldBe null MDC.get("spanName") shouldBe null } "reset the MDC value on pop" in { SpanLocal.push(testSpan) SpanLocal.push(childSpan) MDC.get("moneyTrace") shouldEqual MDCSupport.format(childSpan.id) MDC.get("spanName") shouldEqual childSpan.name SpanLocal.pop() MDC.get("moneyTrace") shouldEqual MDCSupport.format(testSpan.id) MDC.get("spanName") shouldEqual testSpan.name } "remove the MDC value on clear" in { SpanLocal.push(testSpan) MDC.get("moneyTrace") shouldEqual MDCSupport.format(testSpan.id) MDC.get("spanName") shouldEqual testSpan.name SpanLocal.clear() MDC.get("moneyTrace") shouldBe null MDC.get("spanName") shouldBe null } } } }
Example 27
Source File: TraceFriendlyThreadPoolExecutorSpec.scala From money with Apache License 2.0 | 5 votes |
package com.comcast.money.core.concurrent import java.util.concurrent.{ Callable, ExecutorService } import com.comcast.money.api.SpanId import com.comcast.money.core.SpecHelpers import com.comcast.money.core.internal.SpanLocal import org.scalatest.mockito.MockitoSugar import org.scalatest.{ Matchers, OneInstancePerTest, WordSpecLike } import org.slf4j.MDC class TraceFriendlyThreadPoolExecutorSpec extends WordSpecLike with MockitoSugar with Matchers with ConcurrentSupport with OneInstancePerTest with SpecHelpers { val executor: ExecutorService = TraceFriendlyThreadPoolExecutor.newCachedThreadPool "TraceFriendlyThreadPoolExecutor cachedThreadPool" should { "propagate the current span local value" in { val traceId = new SpanId("1", 2L, 3L) SpanLocal.push(testSpan(traceId)) val future = executor.submit(testCallable) future.get shouldEqual Some(traceId) SpanLocal.clear() } "propagate no span value if none is present" in { SpanLocal.clear() val future = executor.submit(testCallable) future.get shouldEqual None SpanLocal.current shouldEqual None } "propagate only the current span id value" in { val traceId1 = new SpanId() val traceId2 = new SpanId() SpanLocal.push(testSpan(traceId1)) SpanLocal.push(testSpan(traceId2)) val future = executor.submit(testCallable) future.get shouldEqual Some(traceId2) } "propagate MDC" in { val traceId = new SpanId("1", 2L, 3L) SpanLocal.push(testSpan(traceId)) MDC.put("foo", "bar") val mdcCallable = new Callable[String] { override def call(): String = MDC.get("foo") } val future = executor.submit(mdcCallable) future.get shouldEqual "bar" SpanLocal.clear() } } "TraceFriendlyThreadPoolExecutor fixedThreadPool" should { val threadPool: TraceFriendlyThreadPoolExecutor = TraceFriendlyThreadPoolExecutor.newFixedThreadPool(1) .asInstanceOf[TraceFriendlyThreadPoolExecutor] "created the pool with the specified number of threads" in { threadPool.getCorePoolSize shouldEqual 1 } } }
Example 28
Source File: CirceJSONSerializerTest.scala From scala-json-rpc with MIT License | 5 votes |
package io.github.shogowada.scala.jsonrpc.serializers import org.scalatest.{FreeSpec, Matchers, OneInstancePerTest} class CirceJSONSerializerTest extends FreeSpec with OneInstancePerTest with Matchers { override def newInstance = new CirceJSONSerializerTest val jsonSerializer = CirceJSONSerializer() "given I have a plain case class" - { case class Test(helloWorld: String) val expectedDeserialized = Test("hello world") val expectedSerialized = """{"helloWorld":"hello world"}""" s"when I serialize $expectedDeserialized" - { val serialized = jsonSerializer.serialize(expectedDeserialized) "then it should serialize into JSON" in { serialized should equal(Some(expectedSerialized)) } } s"when I deserialize $expectedSerialized" - { val deserialized = jsonSerializer.deserialize[Test](expectedSerialized) "then it should deserialize into the case class" in { deserialized should equal(Some(expectedDeserialized)) } } } }
Example 29
Source File: MetricsHandlerSpec.scala From money with Apache License 2.0 | 5 votes |
package com.comcast.money.core.handlers import com.codahale.metrics.{ Meter, Histogram, MetricRegistry } import com.typesafe.config.Config import org.mockito.Mockito._ import org.mockito.Matchers._ import org.scalatest.mockito.MockitoSugar import org.scalatest.{ OneInstancePerTest, Matchers, WordSpec } class MetricsHandlerSpec extends WordSpec with Matchers with MockitoSugar with TestData with OneInstancePerTest { val conf = mock[Config] doReturn(true).when(conf).hasPath("metrics-registry.class-name") doReturn("com.comcast.money.core.metrics.MockMetricRegistryFactory").when(conf).getString("metrics-registry.class-name") "MetricsSpanHandler" should { "configure the metrics registry" in { val underTest = new MetricsSpanHandler() underTest.configure(conf) underTest.metricRegistry shouldBe a[MetricRegistry] } "save latency metric" in { val underTest = new MetricsSpanHandler() underTest.configure(conf) val latencyMetric = mock[Histogram] val errorMetric = mock[Meter] doReturn(latencyMetric).when(underTest.metricRegistry).histogram(anyString()) doReturn(errorMetric).when(underTest.metricRegistry).meter(anyString()) underTest.handle(testSpanInfo) verify(latencyMetric).update(testSpanInfo.durationMicros) verifyZeroInteractions(errorMetric) } "update the error metric" in { val underTest = new MetricsSpanHandler() underTest.configure(conf) val latencyMetric = mock[Histogram] val errorMetric = mock[Meter] doReturn(latencyMetric).when(underTest.metricRegistry).histogram(anyString()) doReturn(errorMetric).when(underTest.metricRegistry).meter(anyString()) underTest.handle(testSpanInfo.copy(success = false)) verify(latencyMetric).update(testSpanInfo.durationMicros) verify(errorMetric).mark() } } }
Example 30
Source File: DirectExecutionContextSpec.scala From money with Apache License 2.0 | 5 votes |
package com.comcast.money.core.async import com.comcast.money.core.SpecHelpers import com.comcast.money.core.concurrent.ConcurrentSupport import org.scalatest.{ Matchers, OneInstancePerTest, WordSpecLike } import org.scalatest.mockito.MockitoSugar class DirectExecutionContextSpec extends WordSpecLike with MockitoSugar with Matchers with ConcurrentSupport with OneInstancePerTest with SpecHelpers { val underTest = new DirectExecutionContext() "DirectExecutionContext" should { "execute the Runnable on the current thread" in { val currentThreadId = Thread.currentThread().getId var callbackThreadId: Long = 0 underTest.execute(new Runnable { override def run(): Unit = { callbackThreadId = Thread.currentThread().getId } }) callbackThreadId shouldEqual currentThreadId } } }
Example 31
Source File: JeroMQSocketSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.communication.socket import org.mockito.invocation.InvocationOnMock import org.mockito.stubbing.Answer import org.scalatest.{Matchers, BeforeAndAfter, OneInstancePerTest, FunSpec} import org.scalatest.mock.MockitoSugar import org.mockito.Mockito._ import org.zeromq.ZMsg class JeroMQSocketSpec extends FunSpec with MockitoSugar with OneInstancePerTest with BeforeAndAfter with Matchers { private val runnable = mock[ZeroMQSocketRunnable] @volatile private var running = true // Mock the running of the runnable for the tests doAnswer(new Answer[Unit] { override def answer(invocation: InvocationOnMock): Unit = while (running) { Thread.sleep(1) } }).when(runnable).run() // Mock the close of the runnable to shutdown doAnswer(new Answer[Unit] { override def answer(invocation: InvocationOnMock): Unit = running = false }).when(runnable).close() private val socket: JeroMQSocket = new JeroMQSocket(runnable) after { running = false } describe("JeroMQSocket") { describe("#send") { it("should offer a message to the runnable") { val message: String = "Some Message" val expected = ZMsg.newStringMsg(message) socket.send(message.getBytes) verify(runnable).offer(expected) } it("should thrown and AssertionError when socket is no longer alive") { socket.close() intercept[AssertionError] { socket.send("".getBytes) } } } describe("#close") { it("should close the runnable") { socket.close() verify(runnable).close() } it("should close the socket thread") { socket.close() socket.isAlive should be (false) } } describe("#isAlive") { it("should evaluate to true when the socket thread is alive") { socket.isAlive should be (true) } it("should evaluate to false when the socket thread is dead") { socket.close() socket.isAlive should be (false) } } } }
Example 32
Source File: CoursierDependencyDownloaderSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.dependencies import java.net.URL import java.nio.file.Files import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} class CoursierDependencyDownloaderSpec extends FunSpec with Matchers with OneInstancePerTest { private val coursierDependencyDownloader = new CoursierDependencyDownloader describe("CoursierDependencyDownloader") { describe("#addMavenRepository") { it("should add to the list of repositories") { val repo = new URL("http://some-repo.com") coursierDependencyDownloader.addMavenRepository(repo, None) val repos = coursierDependencyDownloader.getRepositories repos should contain (repo.toURI) } } describe("#removeMavenRepository") { it("should remove from the list of repositories") { val repo = new URL("http://some-repo.com") coursierDependencyDownloader.addMavenRepository(repo, None) coursierDependencyDownloader.removeMavenRepository(repo) val repos = coursierDependencyDownloader.getRepositories repos should not contain (repo.toURI) } } describe("#setDownloadDirectory") { it("should set the new download directory if valid") { val validDir = Files.createTempDirectory("tmpdir").toFile validDir.deleteOnExit() val result = coursierDependencyDownloader.setDownloadDirectory(validDir) result should be (true) val dir = coursierDependencyDownloader.getDownloadDirectory dir should be (validDir.getAbsolutePath) } it("should not change the directory if given a file") { val invalidDir = Files.createTempFile("tmp", "file").toFile invalidDir.deleteOnExit() val result = coursierDependencyDownloader.setDownloadDirectory(invalidDir) result should be (false) val dir = coursierDependencyDownloader.getDownloadDirectory dir should not be (invalidDir.getAbsolutePath) } it("should support creating missing directories") { val baseDir = Files.createTempDirectory("tmpdir").toFile val validDir = baseDir.toPath.resolve("otherdir").toFile validDir.deleteOnExit() baseDir.deleteOnExit() val result = coursierDependencyDownloader.setDownloadDirectory(validDir) result should be (true) val dir = coursierDependencyDownloader.getDownloadDirectory dir should be (validDir.getAbsolutePath) } } describe("#getRepositories") { it("should have the default repositories") { val expected = Seq(DependencyDownloader.DefaultMavenRepository.toURI) val actual = coursierDependencyDownloader.getRepositories actual should be (expected) } } describe("#getDownloadDirectory") { it("should have the default download directory") { val expected = DependencyDownloader.DefaultDownloadDirectory.getAbsolutePath val actual = coursierDependencyDownloader.getDownloadDirectory actual should be (expected) } } } }
Example 33
Source File: BrokerTransformerSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.interpreter.broker import org.apache.toree.interpreter.{ExecuteError, Results} import org.scalatest.concurrent.Eventually import scala.concurrent.Promise import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} class BrokerTransformerSpec extends FunSpec with Matchers with OneInstancePerTest with Eventually { private val brokerTransformer = new BrokerTransformer describe("BrokerTransformer") { describe("#transformToInterpreterResult") { it("should convert to success with result output if no failure") { val codeResultPromise = Promise[BrokerTypes.CodeResults]() val transformedFuture = brokerTransformer.transformToInterpreterResult( codeResultPromise.future ) val successOutput = "some success" codeResultPromise.success(successOutput) eventually { val result = transformedFuture.value.get.get result should be((Results.Success, Left(Map("text/plain" -> successOutput)))) } } it("should convert to error with broker exception if failure") { val codeResultPromise = Promise[BrokerTypes.CodeResults]() val transformedFuture = brokerTransformer.transformToInterpreterResult( codeResultPromise.future ) val failureException = new BrokerException("some failure") codeResultPromise.failure(failureException) eventually { val result = transformedFuture.value.get.get result should be((Results.Error, Right(ExecuteError( name = failureException.getClass.getName, value = failureException.getLocalizedMessage, stackTrace = failureException.getStackTrace.map(_.toString).toList )))) } } } } }
Example 34
Source File: BrokerProcessHandlerSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.interpreter.broker import org.apache.commons.exec.ExecuteException import org.scalatest.mock.MockitoSugar import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} import org.mockito.Mockito._ import org.mockito.Matchers._ class BrokerProcessHandlerSpec extends FunSpec with Matchers with OneInstancePerTest with MockitoSugar { private val mockBrokerBridge = mock[BrokerBridge] private val brokerProcessHandler = new BrokerProcessHandler( mockBrokerBridge, restartOnFailure = true, restartOnCompletion = true ) describe("BrokerProcessHandler") { describe("#onProcessFailed") { it("should invoke the reset method") { val mockResetMethod = mock[String => Unit] brokerProcessHandler.setResetMethod(mockResetMethod) brokerProcessHandler.onProcessFailed(mock[ExecuteException]) verify(mockResetMethod).apply(anyString()) } it("should invoke the restart method if the proper flag is set to true") { val mockRestartMethod = mock[() => Unit] brokerProcessHandler.setRestartMethod(mockRestartMethod) brokerProcessHandler.onProcessFailed(mock[ExecuteException]) verify(mockRestartMethod).apply() } } describe("#onProcessComplete") { it("should invoke the reset method") { val mockResetMethod = mock[String => Unit] brokerProcessHandler.setResetMethod(mockResetMethod) brokerProcessHandler.onProcessComplete(0) verify(mockResetMethod).apply(anyString()) } it("should invoke the restart method if the proper flag is set to true") { val mockRestartMethod = mock[() => Unit] brokerProcessHandler.setRestartMethod(mockRestartMethod) brokerProcessHandler.onProcessComplete(0) verify(mockRestartMethod).apply() } } } }
Example 35
Source File: BrokerBridgeSpec.scala From incubator-toree with Apache License 2.0 | 5 votes |
package org.apache.toree.interpreter.broker import org.apache.toree.kernel.api.KernelLike import org.scalatest.mock.MockitoSugar import org.scalatest.{FunSpec, Matchers, OneInstancePerTest} class BrokerBridgeSpec extends FunSpec with Matchers with OneInstancePerTest with MockitoSugar { private val mockBrokerState = mock[BrokerState] private val mockKernel = mock[KernelLike] private val brokerBridge = new BrokerBridge( mockBrokerState, mockKernel ) describe("BrokerBridge") { describe("#state") { it("should return the broker state from the constructor") { brokerBridge.state should be (mockBrokerState) } } describe("#kernel") { it("should return the kernel from the constructor") { brokerBridge.kernel should be (mockKernel) } } } }
Example 36
Source File: PluginManagerSpecForIntegration.scala From incubator-toree with Apache License 2.0 | 5 votes |
package integration import org.apache.toree.plugins.{PluginManager, Plugin} import org.apache.toree.plugins.annotations.Init import org.scalatest.{OneInstancePerTest, Matchers, FunSpec} class PluginManagerSpecForIntegration extends FunSpec with Matchers with OneInstancePerTest { private val pluginManager = new PluginManager describe("PluginManager") { it("should be able to load and initialize internal plugins") { val plugins = pluginManager.initialize() plugins.map(_.name) should contain allOf ( classOf[NonCircularPlugin].getName, classOf[RegisterPluginA].getName, classOf[ConsumePluginA].getName ) } it("should be able to initialize plugins with dependencies provided by other plugins") { val cpa = pluginManager.loadPlugin("", classOf[ConsumePluginA]).get val rpa = pluginManager.loadPlugin("", classOf[RegisterPluginA]).get val results = pluginManager.initializePlugins(Seq(cpa, rpa)) results.forall(_.isSuccess) should be (true) } it("should fail when plugins have circular dependencies") { val cp = pluginManager.loadPlugin("", classOf[CircularPlugin]).get val results = pluginManager.initializePlugins(Seq(cp)) results.forall(_.isFailure) should be (true) } it("should be able to handle non-circular dependencies within the same plugin") { val ncp = pluginManager.loadPlugin("", classOf[NonCircularPlugin]).get val results = pluginManager.initializePlugins(Seq(ncp)) results.forall(_.isSuccess) should be (true) } } } private class DepA private class DepB private class CircularPlugin extends Plugin { @Init def initMethodA(depA: DepA) = register(new DepB) @Init def initMethodB(depB: DepB) = register(new DepA) } private class NonCircularPlugin extends Plugin { @Init def initMethodB(depB: DepB) = {} @Init def initMethodA(depA: DepA) = register(new DepB) @Init def initMethod() = register(new DepA) } private class RegisterPluginA extends Plugin { @Init def initMethod() = register(new DepA) } private class ConsumePluginA extends Plugin { @Init def initMethod(depA: DepA) = {} }