Skip to content

Commit

Permalink
change "cluster nodes" return type from Map[String, String] to Cluste…
Browse files Browse the repository at this point in the history
…rNodeInfo
  • Loading branch information
xiaohai2016 committed Jan 3, 2017
1 parent 617abdd commit 6d8ffaf
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 9 deletions.
8 changes: 4 additions & 4 deletions src/main/scala/redis/api/Clusters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ case class ClusterInfo() extends RedisCommand[Bulk, Map[String, String]] {
case s => RedisProtocolReply.decodeReplyBulk(s)
}
}

case class ClusterNodes() extends RedisCommand[Bulk, Array[Map[String, String]]] {
case class ClusterNodeInfo(id:String, ip_port:String, flags:String, master:String, ping_sent:Long, pong_recv:Long, config_epoch:Long, link_state:String, slots:Array[String])
case class ClusterNodes() extends RedisCommand[Bulk, Array[ClusterNodeInfo]] {
val isMasterOnly = false
val encodedRequest: ByteString = encode("CLUSTER NODES")
def decodeReply(b: Bulk): Array[Map[String, String]] = {
b.response.map(_.utf8String.split("\n").map(_.split(" ")).map(s => scala.collection.immutable.Map("id" -> s(0), "ip-port" -> s(1), "flags" -> s(2), "master" -> s(3), "ping-sent" -> s(4), "pong-recv" -> s(5), "config-epoch" -> s(6), "link-state" -> s(7), "slots" -> s.drop(8).mkString(" ")))).getOrElse(Array.empty)
def decodeReply(b: Bulk): Array[ClusterNodeInfo] = {
b.response.map(_.utf8String.split("\n").map(_.split(" ")).map(s => ClusterNodeInfo(s(0), s(1), s(2), s(3), s(4).toLong, s(5).toLong, s(6).toLong, s(7), s.drop(8)))).getOrElse(Array.empty)
}
override val decodeRedisReply: PartialFunction[ByteString, DecodeResult[Bulk]] = {
case s => RedisProtocolReply.decodeReplyBulk(s)
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/redis/commands/Clusters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ trait Clusters extends Request {

def clusterInfo(): Future[Map[String, String]] = send(ClusterInfo())

def clusterNodes(): Future[Array[Map[String, String]]] = send(ClusterNodes())
def clusterNodes(): Future[Array[ClusterNodeInfo]] = send(ClusterNodes())
}
7 changes: 3 additions & 4 deletions src/test/scala/redis/RedisClusterTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,11 @@ class RedisClusterTest extends RedisClusterClients {
val res = Await.result(redisCluster.clusterNodes(), timeOut)
res must not be empty
for (m <- res) {
println(m.map(e => s"${e._1} : ${e._2}").mkString(" | "))
println(m.toString)
}
res.count(_.size >= 8) mustEqual 6
res.size mustEqual 6
res.count(_("master") != "-") mustEqual 3
res.count(_("link-state") == "connected") mustEqual 6
res.count(_.master != "-") mustEqual 3
res.count(_.link_state == "connected") mustEqual 6
}
}
}

0 comments on commit 6d8ffaf

Please sign in to comment.