Fix cache test

This commit is contained in:
Alexander Nozik 2021-11-13 14:07:59 +03:00
parent 4e590d3e14
commit d3689638e0
4 changed files with 30 additions and 39 deletions

View File

@ -87,9 +87,8 @@ class CachePlugin(meta: Meta) : BasicPlugin(meta) {
}
}
@Synchronized
override fun run() {
//TODO add executor
synchronized(cache) {
when {
data.goal.isDone -> data.future.thenAccept { result.complete(it) }
cache.containsKey(id) -> {
@ -109,7 +108,6 @@ class CachePlugin(meta: Meta) : BasicPlugin(meta) {
else -> evalData()
}
}
}
private fun evalData() {
data.goal.run()

View File

@ -175,9 +175,7 @@ interface DataNode<T : Any> : Iterable<NamedData<out T>>, Named, Metoid, Provide
*
* @return
*/
fun nodeGoal(): GoalGroup {
return GoalGroup(this.dataStream().map { it.goal }.toList())
}
fun nodeGoal(): GoalGroup = GoalGroup(dataStream().map { it.goal }.toList())
/**
* Handle result when the node is evaluated. Does not trigger node evaluation. Ignores exceptional completion

View File

@ -71,9 +71,8 @@ abstract class AbstractWorkspace(
/**
* Put given data node into cache one by one
*/
private fun <R : Any> cacheTaskResult(model: TaskModel, node: DataNode<out R>): DataNode<out R> {
return cache.cacheNode(model.name, node) { model.getID(it) }
}
private fun <R : Any> cacheTaskResult(model: TaskModel, node: DataNode<out R>): DataNode<out R> =
cache.cacheNode(model.name, node) { model.getID(it) }
override fun clean() {
logger.info("Cleaning up cache...")

View File

@ -24,6 +24,7 @@ import hep.dataforge.meta.MetaBuilder
import hep.dataforge.workspace.tasks.PipeTask
import hep.dataforge.workspace.tasks.TaskModel
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.BeforeClass
import org.junit.Test
import org.slf4j.LoggerFactory
@ -49,17 +50,23 @@ class WorkspaceTest {
val res2 = wsp.runTask("test2", Meta.empty())
res1.computeAll()
res2.computeAll()
assertEquals(6, counter.get().toLong())
assertEquals(6, counter.get())
val res3 = wsp.runTask("test2", MetaBuilder().putValue("a", 1))
.getCheckedData("data_2", Number::class.java).get().toLong()
assertEquals(6, res3)
assertEquals(8, counter.get().toLong())
assertEquals(8, counter.get())
}
companion object {
private val counter = AtomicInteger()
private lateinit var wsp: Workspace
@Before
fun beforeEach(){
counter.set(0)
}
@BeforeClass
@JvmStatic
fun setup() {
@ -67,19 +74,13 @@ class WorkspaceTest {
load(CachePlugin::class.java, MetaBuilder().setValue("fileCache.enabled", false))
}
val task1 = object : PipeTask<Number, Number>("test1", Number::class.java, Number::class.java) {
override fun buildModel(model: TaskModel.Builder, meta: Meta) {
model.data("*")
}
override fun result(context: Context, name: String, input: Number, meta: Meta): Number {
try {
Thread.sleep(200)
} catch (e: InterruptedException) {
throw RuntimeException(e)
}
counter.incrementAndGet()
return input.toInt() + meta.getInt("a", 2)
}
@ -91,12 +92,7 @@ class WorkspaceTest {
}
override fun result(context: Context, name: String, input: Number, meta: Meta): Number {
try {
Thread.sleep(200)
} catch (e: InterruptedException) {
throw RuntimeException(e)
}
counter.incrementAndGet()
return input.toInt() * meta.getInt("b", 2)
}