Repository: ignite Updated Branches: refs/heads/master d5b274883 -> c42b50cfa
IGNITE-1943 Visor CMD: Fixed wrong behavior of "mclear" command". - Fixes #1179. Signed-off-by: Andrey Novikov <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/24e14b66 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/24e14b66 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/24e14b66 Branch: refs/heads/master Commit: 24e14b6618564873ca9509ce3272cd315df93728 Parents: d5b2748 Author: samaitra <[email protected]> Authored: Tue Jan 24 14:31:24 2017 +0700 Committer: Andrey Novikov <[email protected]> Committed: Tue Jan 24 14:31:24 2017 +0700 ---------------------------------------------------------------------- .../scala/org/apache/ignite/visor/visor.scala | 104 ++++++++++++------- .../commands/mem/VisorMemoryCommandSpec.scala | 14 +++ .../commands/node/VisorNodeCommandSpec.scala | 10 ++ 3 files changed, 89 insertions(+), 39 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/24e14b66/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala index 8673b9c..0aa8549 100644 --- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala +++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala @@ -330,43 +330,6 @@ object visor extends VisorTag { ) addHelp( - name = "mclear", - shortInfo = "Clears Visor console memory variables.", - spec = Seq( - "mclear", - "mclear <name>|-ev|-al|-ca|-no|-tn|-ex" - ), - args = Seq( - "<name>" -> Seq( - "Variable name to clear.", - "Note that name doesn't include '@' symbol used to reference variable." - ), - "-ev" -> - "Clears all 'event' variables.", - "-al" -> - "Clears all 'alert' variables.", - "-ca" -> - "Clears all 'cache' variables.", - "-no" -> - "Clears all 'node' variables.", - "-tn" -> - "Clears all 'task name' variables.", - "-ex" -> - "Clears all 'task execution' variables." - ), - examples = Seq( - "mclear" -> - "Clears all Visor console variables.", - "mclear -ca" -> - "Clears all Visor console cache variables.", - "mclear n2" -> - "Clears 'n2' Visor console variable." - ), - emptyArgs = mclear, - withArgs = mclear - ) - - addHelp( name = "mget", shortInfo = "Gets Visor console memory variable.", longInfo = Seq( @@ -388,6 +351,23 @@ object visor extends VisorTag { ) addHelp( + name = "mcompact", + shortInfo = "Fills gap in Visor console memory variable.", + longInfo = Seq( + "Finds and fills gap in Visor console memory variable." + ), + spec = Seq( + "mcompact" + ), + examples = Seq( + "mcompact" -> + "Fills gap in Visor console memory variable." + ), + emptyArgs = mcompact, + withArgs = _ => wrongArgs("mcompact") + ) + + addHelp( name = "help", shortInfo = "Prints Visor console help.", aliases = Seq("?"), @@ -616,6 +596,28 @@ object visor extends VisorTag { } /** + * ==Command== + * Fills gap in Visor console memory variable. + * + * ==Examples== + * <ex>mcompact</ex> + * Fills gap in Visor console memory variable. + */ + def mcompact() { + var elements = Array("e", "a", "c", "n", "t", "s") + for (element <- elements){ + val r = mem.filter { case (k, _) => (element.contains(k.charAt(0)) && k != "nl" && k != "nr") } + + if (r.isEmpty) + NA + else { + clearNamespace(element) + r.toSeq.sortBy(_._1).foreach { case (k, v) => setVar(v, element) } + } + } + } + + /** * Clears given Visor console variable or the whole namespace. * * @param arg Variable host or namespace mnemonic. @@ -1677,15 +1679,39 @@ object visor extends VisorTag { val n = ignite.cluster.node(id) val id8 = nid8(id) - val v = mfindHead(id8) + var v = mfindHead(id8) + + if(!v.isDefined){ + v = assignNodeValue(n) + } id8 + - (if (v.isDefined) "(@" + v.get._1 + ")" else "") + + (if (v.isDefined) "(@" + v.get._1 + ")" else "" )+ ", " + (if (n == null) NA else sortAddresses(n.addresses).headOption.getOrElse(NA)) } } + def assignNodeValue(node: ClusterNode): Option[(String, String)] = { + assert(node != null) + + val id8 = nid8(node.id()) + + setVarIfAbsent(id8, "n") + + val alias = if (U.sameMacs(ignite.localNode(), node)) "nl" else "nr" + + if (mgetOpt(alias).isEmpty) + msetOpt(alias, nid8(node.id())) + + val ip = sortAddresses(node.addresses).headOption + + if (ip.isDefined) + setVarIfAbsent(ip.get, "h") + + mfindHead(id8) + } + /** * Returns string with node id8 and its memory variable, if available. * http://git-wip-us.apache.org/repos/asf/ignite/blob/24e14b66/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/mem/VisorMemoryCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/mem/VisorMemoryCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/mem/VisorMemoryCommandSpec.scala index 27eaa94..a360ea3 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/mem/VisorMemoryCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/mem/VisorMemoryCommandSpec.scala @@ -79,4 +79,18 @@ class VisorMemoryCommandSpec extends FunSpec with Matchers { visor.mlist() } } + + describe("A 'mcompact' visor command") { + it("should compact variable") { + + visor.mset("key1", "value1") + visor.mset("key2", "value2") + visor.mset("key3", "value3") + + visor mclear "key2" + + visor.mcompact() + visor.mlist() + } + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/24e14b66/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/node/VisorNodeCommandSpec.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/node/VisorNodeCommandSpec.scala b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/node/VisorNodeCommandSpec.scala index c0983c0..0ef4814 100644 --- a/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/node/VisorNodeCommandSpec.scala +++ b/modules/visor-console/src/test/scala/org/apache/ignite/visor/commands/node/VisorNodeCommandSpec.scala @@ -38,5 +38,15 @@ class VisorNodeCommandSpec extends VisorRuntimeBaseSpec(1) { visor.node("") // Arguments are ignored. } + + visor.mclear() + + it("should properly execute with valid node ID value post mclear") { + visor.node("-id8=@n1") + } + + it("should list all variables") { + visor.mlist() + } } }
