Groovy
Содержание
Общие сведения
Groovy telnet-скрипты представляют из себя полноценные скрипты на языке программирования Groovy.
Согласно правилам языка Groovy строки нужно брать в одинарные или двойные кавычки. В одинарных кавычках все отправляется как есть, в двойных интерполируются имена переменных с долларом (превращаются в значения).
def port = "Ethernet1/5" println "The port is $port"
выведет The port is Ethernet1/5
.
Если переменная используется не внутри сроки, то доллар вначале ставить не нужно.
def port = "Ethernet1/5" println port
выведет Ethernet1/5
.
Язык Groovy является надмножеством языка Java, поэтому практически любые Java-конструкции в нем так же будут работать.
Скобки при вызове метода ставить не обязательно только в том случае, если метод имеет хотя бы один аргумент.
Так:
withTimeout(5, SECONDS).expect(regexp("# $"))
эквивалентно withTimeout 5, SECONDS expect regexp("# $")
Доступные команды:
expect "string"
Ожидать, пока telnet-сессия выведет в output string
.
Примеры:
-
expect "#"
-
expect prompt
-
expect "# port_$port_number sn:$onu_sn"
expect Matcher
Ожидать, пока telnet-сессия выведет в output строку, соответствующую Matcher
.
Возможные Matcher-ы:
-
allOf(Matcher, Matcher...)
- Creates a matcher that matches if the examined input matches all of the specified matchers. -
anyOf(Matcher, Matcher...)
- Creates a matcher that matches if the examined input matches any of the specified matchers. -
anyString()
- Creates a matcher that matches when at least one character exists in the input buffer. -
contains(String)
- Creates a matcher ofString
that matches when examined input contains the given substring. -
eof()
- Creates a matcher that matches if input reaches the end of stream (closed telnet session). -
exact(String)
- Creates a matcher that matches when the given string is equal to the input buffer contents. -
matches(String)
- Creates a matcher ofString
that matches when examined input fully matches the given regular expression. -
matches(Pattern)
- Creates a matcher ofPattern
that matches when examined input fully matches the given regular expression. -
regexp(String)
- Creates a matcher ofString
that matches when examined input contains the given regular expression. -
regexp(Pattern)
- Creates a matcher ofPattern
that matches when examined input contains the given regular expression. -
sequence(Matcher, Matcher...)
- Matches the given matchers one by one. Every successful matches updates the internal buffer. The consequent match operation is performed after the previous match has succeeded. -
startsWith(String)
- Creates a matcher that matches when the input buffer starts with the given string. -
times(int, Matcher)
- Creates a matcher that matches if the givenMatcher
matches thenumber
of times.
Примеры:
-
expect contains("vasya")
- то же самое, что иexpect "vasya"
-
expect regexp("# $")
- ожидать, пока в output появится строка, соответствующая регулярному выражению "# $" (output будет заканчиваться на решетку и пробел) -
expect times(3, contains("vasya_$num"))
- ожидать, пока в output 3 раза встретится строка "vasya_$num" ($num будет интерполировано) -
expect anyOf(contains("vasya"), contains("petya"))
- ожидать, пока в output появится либо "vasya", либо "petya" -
expect sequence(contains("vasya"), contains("petya"))
- ожидать, пока в output появится "vasya", а затем "petya" (именно в этом порядке) -
expect allOf(contains("vasya"), contains("petya"))
- ожидать, пока в output появится "vasya" и "petya" (в любом порядке)
send "string"
Отослать в telnet-сессию string
(без Enter
в конце).
Примеры:
-
send "con t"
-
send "\b\b\b\b\b"
-
send "man $port_number\n"
sendLine "string"
Отослать в telnet-сессию string
(с Enter
в конце).
То же самое, что send "string\n"
.
Примеры:
-
sendLine "con t"
-
sendLine login
-
sendLine "man $port_number"
sendLine()
Отослать Enter
.
То же самое, что send "\n"
или sendLine ""
.
Примеры:
-
sendLine()
withTimeout duration, TimeUnit
Переопределить таймаут для последующей команды.
Обычно используется совместно с expect
.
Примеры:
-
withTimeout 30, SECONDS expect "# "
-
withTimeout 1, MINUTES expect prompt
-
withTimeout 3000, MILLISECONDS expect "all done"
withTimeoutMs duration
То же самое, что и withTimeout duration, MILLISECONDS
.
Примеры:
-
withTimeoutMs 7000 expect "# "