mirror of
https://github.com/ntop/ntopng.git
synced 2026-05-08 06:24:34 +00:00
314 lines
9.9 KiB
Lua
314 lines
9.9 KiB
Lua
--
|
|
-- (C) 2013-21 - ntop.org
|
|
--
|
|
|
|
local dirs = ntop.getDirs()
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
|
|
if((dirs.scriptdir ~= nil) and (dirs.scriptdir ~= "")) then package.path = dirs.scriptdir .. "/lua/modules/?.lua;" .. package.path end
|
|
|
|
if ntop.isPro() then
|
|
package.path = dirs.installdir .. "/scripts/lua/pro/modules/?.lua;" .. package.path
|
|
package.path = dirs.installdir .. "/pro/scripts/callbacks/?.lua;" .. package.path
|
|
end
|
|
require "lua_utils"
|
|
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/pools/?.lua;" .. package.path
|
|
local interface_pools = require "interface_pools"
|
|
local local_network_pools = require "local_network_pools"
|
|
local snmp_device_pools = require "snmp_device_pools"
|
|
local active_monitoring_pools = require "active_monitoring_pools"
|
|
local host_pools = require "host_pools"
|
|
|
|
-- interface_pools.get_available_members()
|
|
|
|
local function has_member(members, member)
|
|
for _, cur_member in pairs(members) do
|
|
if cur_member == member then
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
-- TEST interface pools
|
|
local s = interface_pools:create()
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
-- Creation
|
|
local new_pool_id = s:add_pool('my_pool', {"5"} --[[ an array of valid interface ids]], 0 --[[ a valid configset_id --]], {})
|
|
assert(new_pool_id == s.MIN_ASSIGNED_POOL_ID)
|
|
|
|
-- Getter (by id)
|
|
local pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_pool")
|
|
|
|
-- Getter (a non-existing id)
|
|
assert(not s:get_pool(999))
|
|
|
|
-- Getter (by name)
|
|
pool_details = s:get_pool_by_name('my_pool')
|
|
assert(pool_details["name"] == "my_pool")
|
|
|
|
-- Getter (a non-existing name)
|
|
assert(not s:get_pool_by_name('my_non_existing_name'))
|
|
|
|
-- Edit
|
|
s:edit_pool(new_pool_id, 'my_renewed_pool', {"5"}, 0)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_renewed_pool")
|
|
assert(has_member(pool_details["members"], "5"))
|
|
|
|
-- Delete
|
|
s:delete_pool(new_pool_id)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details == nil)
|
|
|
|
-- Addition of another pool
|
|
local second_pool_id = s:add_pool('my_second_pool', {"5"} --[[ an array of valid interface ids]], 0 --[[ a valid configset_id --]], {})
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
-- Edit of the second pool
|
|
s:edit_pool(second_pool_id, 'my_second_pool_edited', {"5"}, 0)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
-- Assign a memeber to the default pool id and make sure it has been removed from second_pool
|
|
s:bind_member("5", s.DEFAULT_POOL_ID)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(not has_member(pool_details["members"], "5"))
|
|
|
|
-- Assign back a member to the second pool and make sure second pool contains it
|
|
s:bind_member("5", second_pool_id)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(has_member(pool_details["members"], "5"))
|
|
|
|
-- Addition of another pool
|
|
local third_pool_id = s:add_pool('my_third_pool', {"3"} --[[ an array of valid interface ids]], 0 --[[ a valid configset_id --]], {})
|
|
assert(third_pool_id == second_pool_id + 1)
|
|
|
|
-- Attempt at assigning a assigning to a pool a member which is already bound to another pool
|
|
local res = s:edit_pool(second_pool_id, 'my_pool', {"3"}, 0)
|
|
assert(res == false)
|
|
|
|
-- 'switch' member from the third to the second pool
|
|
s:bind_member("3", second_pool_id)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(has_member(pool_details["members"], "3"))
|
|
pool_details = s:get_pool(third_pool_id)
|
|
assert(not has_member(pool_details["members"], "3"))
|
|
|
|
|
|
-- tprint(s:get_all_members())
|
|
-- tprint(s:get_available_members())
|
|
-- tprint(s:get_assigned_members())
|
|
-- tprint(pool_details)
|
|
-- s:delete_pool(new_pool_id)
|
|
-- tprint(s:get_all_pools())
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
-- TEST local network pools
|
|
local s = local_network_pools:create()
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
-- Creation
|
|
local new_pool_id = s:add_pool('my_local_network_pool', {"127.0.0.0/8"} --[[ an array of valid local networks ]], 0 --[[ a valid configset_id --]], {})
|
|
assert(new_pool_id == s.MIN_ASSIGNED_POOL_ID)
|
|
|
|
-- Getter (by id)
|
|
local pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_local_network_pool")
|
|
|
|
-- Getter (a non-existing id)
|
|
assert(not s:get_pool(999))
|
|
|
|
-- Getter (by name)
|
|
pool_details = s:get_pool_by_name('my_local_network_pool')
|
|
assert(pool_details["name"] == "my_local_network_pool")
|
|
|
|
-- Getter (a non-existing name)
|
|
assert(not s:get_pool_by_name('my_local_network_non_existing_name'))
|
|
|
|
-- Edit
|
|
s:edit_pool(new_pool_id, 'my_local_network_renewed_pool', {"192.168.2.0/24"}, 0)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_local_network_renewed_pool")
|
|
|
|
-- Delete
|
|
s:delete_pool(new_pool_id)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details == nil)
|
|
|
|
-- Addition of another pool
|
|
local second_pool_id = s:add_pool('my_local_network_second_pool', {"127.0.0.0/8"} --[[ an array of valid local networks ]], 0 --[[ a valid configset_id --]], {})
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
-- Edit of the second pool
|
|
s:edit_pool(second_pool_id, 'my_local_network_second_pool_edited', {"127.0.0.0/8"}, 0)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
s:cleanup()
|
|
|
|
-- TEST snmp device pools
|
|
local s = snmp_device_pools:create()
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
-- Creation
|
|
local new_pool_id = s:add_pool('my_snmp_device_pool', {"192.168.2.169"} --[[ an array of valid snmp_device ip]], 0 --[[ a valid configset_id --]], {})
|
|
assert(new_pool_id == s.MIN_ASSIGNED_POOL_ID)
|
|
|
|
-- Getter (by id)
|
|
local pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_snmp_device_pool")
|
|
|
|
-- Getter (a non-existing id)
|
|
assert(not s:get_pool(999))
|
|
|
|
-- Getter (by name)
|
|
pool_details = s:get_pool_by_name('my_snmp_device_pool')
|
|
assert(pool_details["name"] == "my_snmp_device_pool")
|
|
|
|
-- Getter (a non-existing name)
|
|
assert(not s:get_pool_by_name('my_snmp_device_non_existing_name'))
|
|
|
|
-- Edit
|
|
s:edit_pool(new_pool_id, 'my_snmp_device_renewed_pool', {"192.168.2.168"}, 0)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_snmp_device_renewed_pool")
|
|
|
|
-- Delete
|
|
s:delete_pool(new_pool_id)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details == nil)
|
|
|
|
-- Addition of another pool
|
|
local second_pool_id = s:add_pool('my_snmp_device_second_pool', {"192.168.2.169"} --[[ an array of valid snmp_device ip ]], 0 --[[ a valid configset_id --]], {})
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
-- Edit of the second pool
|
|
s:edit_pool(second_pool_id, 'my_snmp_device_second_pool_edited', {"192.168.2.169"}, 0)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
-- TEST active monitoring pools
|
|
local s = active_monitoring_pools:create()
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
-- Creation
|
|
local new_pool_id = s:add_pool('my_am_pool', {"https@ntop.org"} --[[ an array of valid active monitoring keys ]], 0 --[[ a valid configset_id --]], {})
|
|
assert(new_pool_id == s.MIN_ASSIGNED_POOL_ID)
|
|
|
|
-- Getter (by id)
|
|
local pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_am_pool")
|
|
|
|
-- Getter (a non-existing id)
|
|
assert(not s:get_pool(999))
|
|
|
|
-- Getter (by name)
|
|
pool_details = s:get_pool_by_name('my_am_pool')
|
|
assert(pool_details["name"] == "my_am_pool")
|
|
|
|
-- Getter (a non-existing name)
|
|
assert(not s:get_pool_by_name('my_am_non_existing_name'))
|
|
|
|
-- Edit
|
|
s:edit_pool(new_pool_id, 'my_am_renewed_pool', {"icmp@9.9.9.9"}, 0)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_am_renewed_pool")
|
|
|
|
-- Delete
|
|
s:delete_pool(new_pool_id)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details == nil)
|
|
|
|
-- Addition of another pool
|
|
local second_pool_id = s:add_pool('my_am_second_pool', {"https@ntop.org"} --[[ an array of valid interface ids]], 0 --[[ a valid configset_id --]], {})
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
-- Edit of the second pool
|
|
s:edit_pool(second_pool_id, 'my_am_second_pool_edited', {"https@ntop.org"}, 0)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(second_pool_id == new_pool_id + 1)
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
-- TEST host pools
|
|
|
|
local s = host_pools:create()
|
|
|
|
s:cleanup()
|
|
|
|
-- Creation
|
|
local new_pool_id = s:add_pool('my_host_pool', {"192.168.2.222/32@0"} --[[ an array of valid host pool members ]], 0 --[[ a valid configset_id --]], {})
|
|
assert(new_pool_id == s.MIN_ASSIGNED_POOL_ID)
|
|
|
|
-- Getter (by id)
|
|
local pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_host_pool")
|
|
|
|
-- Getter (a non-existing id)
|
|
local non_existing = s:get_pool(999)
|
|
assert(not not_existing)
|
|
|
|
-- Getter (by name)
|
|
pool_details = s:get_pool_by_name('my_host_pool')
|
|
assert(pool_details["name"] == "my_host_pool")
|
|
|
|
-- Getter (a non-existing name)
|
|
assert(not s:get_pool_by_name('my_host_non_existing_name'))
|
|
|
|
-- Edit
|
|
s:edit_pool(new_pool_id, 'my_host_renewed_pool', {"192.168.2.222/32@0", "192.168.2.0/24@0", "AA:BB:CC:DD:EE:FF"}, 0)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details["name"] == "my_host_renewed_pool")
|
|
|
|
-- Delete
|
|
s:delete_pool(new_pool_id)
|
|
pool_details = s:get_pool(new_pool_id)
|
|
assert(pool_details == nil)
|
|
|
|
-- Addition of another pool
|
|
local second_pool_id = s:add_pool('my_host_second_pool', {"8.8.8.8/32@0"} --[[ an array of valid interface ids]], 0 --[[ a valid configset_id --]], {})
|
|
assert(second_pool_id == new_pool_id)
|
|
|
|
-- Edit of the second pool
|
|
s:edit_pool(second_pool_id, 'my_host_second_pool_edited', {"192.168.2.0/24@0", "8.8.8.8/32@0"}, 0)
|
|
pool_details = s:get_pool(second_pool_id)
|
|
assert(second_pool_id == new_pool_id) -- There's no +1 here, host pool ids are re-used
|
|
|
|
-- Addition of a third pool
|
|
local third_pool_id = s:add_pool('my_host_third_pool', {"1.1.1.1/32@0"} --[[ an array of valid interface ids]], 0 --[[ a valid configset_id --]], {})
|
|
assert(third_pool_id == second_pool_id + 1)
|
|
|
|
-- Edit of the third pool (try to add a member already bound to another pool)
|
|
local res = s:edit_pool(third_pool_id, 'my_host_third_pool_edited', {"8.8.8.8/32@0"}, 0)
|
|
assert(res == false)
|
|
|
|
-- pool_details = s:get_pool(third_pool_id)
|
|
-- assert(pool_details["name"] == "my_host_third_pool_edited") -- There's no +1 here, host pool ids are re-used
|
|
|
|
-- tprint(s:get_assigned_members())
|
|
-- tprint(s:get_all_pools())
|
|
|
|
-- Cleanup
|
|
s:cleanup()
|
|
|
|
|
|
print("OK\n")
|
|
|