(* Tests for the Nut module *)

module Test_nut =

let nut_conf = "
MODE=standalone
"

test NutNutConf.nut_lns get nut_conf = 
	{ }
	{ "MODE" = "standalone" }

let ups_conf  = "
[testups]
	driver = dummy-ups
	port = auto
	desc = \"Dummy UPS\"
"

test NutUpsConf.ups_lns get ups_conf = 
	{ }
	{ "testups" 
		{ "driver" = "dummy-ups"   }
		{ "port"   = "auto" }
		{ "desc"   = "\"Dummy UPS\""    } }


let upsd_conf = "
MAXAGE 30
LISTEN 0.0.0.0 3493
MAXCONN 1024
"

test NutUpsdConf.upsd_lns get upsd_conf = 
	{ }
	{ "MAXAGE"      = "30" }
	{ "LISTEN"
		{ "interface" = "0.0.0.0" }
		{ "port"     = "3493"     } }
	{ "MAXCONN"      = "1024" }

let upsd_users = "
	[admin]
		password = upsman
		actions = SET FSD
		instcmds = ALL

	[pfy]
		password = duh
		instcmds = test.panel.start
		instcmds = test.panel.stop

	[monmaster]
		password = blah
		upsmon master

	[monslave]
		password = abcd
		upsmon slave
"

test NutUpsdUsers.upsd_users_lns get upsd_users = 
	{ }
	{ "admin"
		{ "password" = "upsman" }
		{ "actions"
			{ "SET" }
			{ "FSD" } }
		{ "instcmds" = "ALL" }
		{ }  }
	{ "pfy"
		{ "password" = "duh" }
		{ "instcmds" = "test.panel.start" }
		{ "instcmds" = "test.panel.stop" }
		{ }  }
	{ "monmaster"
		{ "password" = "blah" }
		{ "upsmon" = "master" }
		{ }  }
	{ "monslave"
		{ "password" = "abcd" }
		{ "upsmon" = "slave" } }

let upsmon_conf = "
MONITOR testups@localhost 1 monmaster blah master

MINSUPPLIES 1
SHUTDOWNCMD /sbin/shutdown -h +0
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 30
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
"

test NutUpsmonConf.upsmon_lns get upsmon_conf =
	{ }
	{ "MONITOR"
		{ "system"
		{ "upsname"  = "testups"    }
		{ "hostname" = "localhost" } }
		{ "powervalue" = "1"                }
		{ "username"   = "monmaster"          }
		{ "password"   = "blah"           }
		{ "type"       = "master"           } }
	{ }
	{ "MINSUPPLIES"   = "1"  }
	{ "SHUTDOWNCMD"   = "/sbin/shutdown -h +0" }
	{ "POLLFREQ"      = "5"  }
	{ "POLLFREQALERT" = "5"  }
	{ "HOSTSYNC"      = "30" }
	{ "DEADTIME"      = "15" }
	{ "POWERDOWNFLAG" = "/etc/killpower" }
	{ "RBWARNTIME"    = "43200" }
	{ "NOCOMMWARNTIME" = "300" }
	{ "FINALDELAY"    = "5" }

let upsset_conf = "
 I_HAVE_SECURED_MY_CGI_DIRECTORY
"

test NutUpssetConf.upsset_lns get upsset_conf = 
	{ }
	{ "auth"	= "I_HAVE_SECURED_MY_CGI_DIRECTORY" }


let upssched_conf = "
CMDSCRIPT /upssched-cmd
PIPEFN /var/state/ups/upssched/upssched.pipe
LOCKFN /var/state/ups/upssched/upssched.lock
AT COMMBAD * START-TIMER upsgone 10
AT COMMOK myups@localhost CANCEL-TIMER upsgone
AT ONLINE * EXECUTE ups-back-on-line
"

test NutUpsschedConf.upssched_lns get upssched_conf =
	{ }
	{ "CMDSCRIPT"	= "/upssched-cmd" }
	{ "PIPEFN"	= "/var/state/ups/upssched/upssched.pipe" }
	{ "LOCKFN"	= "/var/state/ups/upssched/upssched.lock" }
	{ "AT" 
		{ "notifytype" = "COMMBAD" }
		{ "upsname" = "*" }
		{ "START-TIMER"
			{ "timername" = "upsgone" }
			{ "interval" = "10" }
		}
	}
	{ "AT" 
		{ "notifytype" = "COMMOK" }
		{ "upsname" = "myups@localhost" }
		{ "CANCEL-TIMER"
			{ "timername" = "upsgone" }
		}
	}
	{ "AT" 
		{ "notifytype" = "ONLINE" }
		{ "upsname" = "*" }
		{ "EXECUTE"
			{ "command" = "ups-back-on-line" }
		}
	}


let hosts_conf = "
MONITOR myups@localhost \"Local UPS\"
MONITOR su2200@10.64.1.1 \"Finance department\"
MONITOR matrix@shs-server.example.edu \"Sierra High School data room #1\"
"

test NutHostsConf.hosts_lns get hosts_conf =
	{ }
	{ "MONITOR" 
		{ "system" = "myups@localhost" }
		{ "description" = "Local UPS" }
	}
	{ "MONITOR" 
		{ "system" = "su2200@10.64.1.1" }
		{ "description" = "Finance department" }
	}
	{ "MONITOR" 
		{ "system" = "matrix@shs-server.example.edu" }
		{ "description" = "Sierra High School data room #1" }
	}