view scripts/topology/treen.rb @ 369:0c24894db37e multicast

MulticastDataSegment's extends change from LocalDataSegment to RemoteDataSegment
author sugi
date Tue, 20 May 2014 15:00:21 +0900
parents 7e99ae6e4c7d
children
line wrap: on
line source

def create_nodes(node_num)
  (0..node_num - 1).map { |i|
    i = "node" + i.to_s
  }
end

def print_dot(connections)
  puts "digraph test {"
  connections.each { |connection|
    print "\t"
    print connection[0]
    print " -> "
    print connection[1]
    print ' [label="' + connection[2] + '"]'
    puts
  }
  puts "}"
end

node_num = ARGV[0].to_i
child_num = ARGV[1].to_i
nodes = create_nodes(node_num)
connections = Array.new
nodes.each_with_index { |node, i|
  child1 = child_num * i + 1
  if child1 >= node_num then
    nodes[i] = "cli" + i.to_s
  end
}
nodes.each_with_index { |node, i|
  parent = (i - 1) / child_num;
  child = Array.new
  for n in 1..child_num
    child[n] = child_num * i + n
  end

  if parent >= 0 then
    connections << [nodes[i], nodes[parent], "parent"]
  end
  for n in 1..child_num
    if child[n] < node_num then
      connections << [nodes[i], nodes[child[n]], "child"+(n-1).to_s]
    end
  end
}
print_dot(connections)