Skip to content
Snippets Groups Projects
Commit 3756ba1f authored by Alexandre's avatar Alexandre
Browse files

Test agent behavior for compute similarity

parent 41699257
No related branches found
No related tags found
No related merge requests found
......@@ -147,7 +147,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<ClusterAMAS<T>, Clu
}
case ACTIVE -> {
if (receivedRequestSimilarityRequester != null) {
computedSimilarityScoreDuringThisCycle = computeSimilarityScore(receivedRequestSimilarityRequester);
computedSimilarityScoreDuringThisCycle = computeSimilarityScore(receivedClusterForRequestSimilarity);
if (logger.isLoggable(Level.INFO))
logger.info(this + " computed a similarity of " + computedSimilarityScoreDuringThisCycle + " with " + receivedRequestSimilarityRequester);
}
......@@ -185,7 +185,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<ClusterAMAS<T>, Clu
var message = new EvaluatedScoreMessage(this, computedSimilarityScoreDuringThisCycle);
if (logger.isLoggable(Level.INFO))
logger.info(this + " --> " + receivedRequestSimilarityRequester + " " + message);
receivedRequestSimilarityRequester.mailbox.receive(message);
receivedRequestSimilarityRequester.getMailbox().receive(message);
receivedRequestSimilarityRequester = null;
if (computedSimilarityScoreDuringThisCycle >= getAmas().getMasSettings().fusionThreshold()) {
......@@ -266,7 +266,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<ClusterAMAS<T>, Clu
}
private float computeSimilarityScore(ClusterAgent<T> other) {
return getAmas().getMasSettings().similarityScoreMethod().apply(this.cluster.getRepresentative(), other.cluster.getRepresentative());
private float computeSimilarityScore(Cluster<T> other) {
return getAmas().getMasSettings().similarityScoreMethod().apply(this.cluster.getRepresentative(), other.getRepresentative());
}
}
package fr.irit.smac.clumate.amas
import fr.irit.smac.amak.Agent
import fr.irit.smac.amak.Amas
import fr.irit.smac.amak.messaging.Mailbox
import fr.irit.smac.amak.messaging.Message
import fr.irit.smac.clumate.amas.messages.EvaluatedScoreMessage
import fr.irit.smac.clumate.amas.messages.RequestSimilarityMessage
import fr.irit.smac.clumate.cluster.Cluster
import fr.irit.smac.clumate.cluster.DataPoint
import fr.irit.smac.clumate.cluster.DataPointFuser
import fr.irit.smac.clumate.cluster.SimilarityScoreMethod
import spock.lang.Specification
import spock.util.concurrent.BlockingVariable
class ClusterAgentTest extends Specification {
def "When an agent in DORMANT receives a RequestSimilarityMessage, it should reply with a similarity score"() {
given:
def amas = new ClusterAMAS(new ClusterEnvironment<DataPoint>(), new MASSettings<DataPoint>(Mock(SimilarityScoreMethod), 0.5, EnumSet.noneOf(AMASOption),Mock(DataPointFuser)))
def agent = new ClusterAgent(amas, Mock(DataPoint))
def messageReceivedByRequester = new BlockingVariable()
def similarityScoreMethodMock = Mock(SimilarityScoreMethod)
similarityScoreMethodMock.apply(_, _) >> 0.3
def amasMock = Mock(ClusterAMAS<DataPoint>)
amasMock.getMasSettings() >> new MASSettings(similarityScoreMethodMock, 0.5f, EnumSet.noneOf(AMASOption), Mock(DataPointFuser))
def agent = new ClusterAgent(amasMock, Mock(DataPoint))
agent.state = ClusterAgent.State.DORMANT
def mock = Mock(ClusterAgent)
def requesterMailboxMock = Mock(Mailbox)
requesterMailboxMock.receive(_) >> { msg ->
messageReceivedByRequester.set(msg)
}
def requesterAgentMock = Mock(ClusterAgent)
requesterAgentMock.getMailbox() >> requesterMailboxMock
when:
agent.mailbox.receive(new RequestSimilarityMessage(mock, Mock(Cluster)))
agent.mailbox.receive(new RequestSimilarityMessage(requesterAgentMock, Mock(Cluster)))
agent.cycle()
agent.cycle()
then:
agent.state == ClusterAgent.State.ACTIVE
messageReceivedByRequester.get()[0] instanceof EvaluatedScoreMessage
((EvaluatedScoreMessage) (messageReceivedByRequester.get()[0])).similarityScore == 0.3f
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment