1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
# -*- coding: utf-8 -*-
#
# Copyright (c) ZeroC, Inc. All rights reserved.
#
class IceGridAdminTestCase(IceGridTestCase):
def __init__(self):
self.glacier2router = Glacier2Router(props=routerProps, waitForShutdown=False)
IceGridTestCase.__init__(self, application=None, server=self.glacier2router)
def runClientSide(self, current):
def expect(admin, msg):
if admin.expect(current, ['error:', msg] if isinstance(msg, str) else ['error:'] + msg) == 0:
raise RuntimeError(admin.getOutput(current))
current.write("testing login with username/password... ")
admin=IceGridAdmin()
admin.start(current)
expect(admin, '>>> ')
admin.sendline(current, "server list")
expect(admin, '>>> ')
admin.sendline(current, 'exit')
admin.stop(current, True)
defaultRouterProps = { "Ice.Default.Router" : self.glacier2router.getClientProxy(current) }
admin.start(current, props=defaultRouterProps)
expect(admin, '>>> ')
admin.sendline(current, "server list")
expect(admin, '>>> ')
admin.sendline(current, 'exit')
admin.stop(current, True)
current.writeln("ok")
if current.config.protocol == "ssl":
current.write("testing login with ssl... ")
# Direct registry connection with SSL
admin.start(current, args=["--ssl"])
expect(admin, '>>> ')
admin.sendline(current, "server list")
expect(admin, '>>> ')
admin.sendline(current, 'exit')
admin.stop(current, True)
# Glacier2 connection with username/password
admin.start(current, args=["--ssl"], props=defaultRouterProps)
expect(admin, '>>> ')
admin.sendline(current, "server list")
expect(admin, '>>> ')
admin.sendline(current, 'exit')
admin.stop(current, True)
current.writeln("ok")
current.write("testing commands... ")
admin.start(current)
try:
serverDir = current.getBuildDir("server")
expect(admin, '>>> ')
admin.sendline(current, 'application add application.xml server.dir=%s' % serverDir)
expect(admin, '>>> ')
admin.sendline(current, 'application list')
expect(admin, 'Test')
admin.sendline(current, 'application describe Test')
expect(admin, 'application `Test\'')
expect(admin, '\{.*\}')
expect(admin, '>>> ')
admin.sendline(current, 'application diff application.xml server.dir=%s' % serverDir)
expect(admin, 'application `Test\'\n\{.*\}')
expect(admin, '>>> ')
admin.sendline(current, 'application update application.xml server.dir=%s' % serverDir)
expect(admin, '>>> ')
admin.sendline(current, 'application patch Test')
expect(admin, '>>> ')
admin.sendline(current, 'server list')
expect(admin, 'server')
expect(admin, '>>> ')
admin.sendline(current, 'server describe server')
expect(admin, 'server `server\'\n\{.*\}')
expect(admin, '>>> ')
admin.sendline(current, 'server start server')
expect(admin, '>>> ')
admin.sendline(current, 'server state server')
expect(admin, '^active \(.*\)')
expect(admin, '>>> ')
admin.sendline(current, 'server pid server')
expect(admin, '[0-9]+')
expect(admin, '>>> ')
admin.sendline(current, 'server properties server')
expect(admin, '>>> ')
admin.sendline(current, 'server property server Ice.Admin.ServerId')
expect(admin, "^server")
expect(admin, '>>> ')
admin.sendline(current, 'server patch server')
expect(admin, '>>> ')
admin.sendline(current, 'server disable server')
expect(admin, '>>> ')
admin.sendline(current, 'server enable server')
expect(admin, '>>> ')
admin.sendline(current, 'adapter list')
expect(admin, 'TestAdapter')
expect(admin, '>>> ')
admin.sendline(current, 'adapter endpoints TestAdapter')
expect(admin, ['tcp', 'ssl', 'ws', 'wss'])
expect(admin, '>>> ')
admin.sendline(current, 'object list')
expect(admin, 'test')
expect(admin, '>>> ')
admin.sendline(current, 'object describe')
expect(admin, 'proxy = `.*\' type = `.*\'')
expect(admin, '>>> ')
admin.sendline(current, 'object find Test')
expect(admin, 'test')
expect(admin, '>>> ')
admin.sendline(current, 'server stop server')
expect(admin, '>>> ')
admin.sendline(current, 'application remove Test')
expect(admin, '>>> ')
admin.sendline(current, 'registry list')
expect(admin, 'Master')
expect(admin, '>>> ')
admin.sendline(current, 'registry ping Master')
expect(admin, 'registry is up')
expect(admin, '>>> ')
admin.sendline(current, 'registry describe Master')
expect(admin, 'registry `Master\'\n{.*}')
expect(admin, '>>> ')
admin.sendline(current, 'node list')
expect(admin, 'localnode')
expect(admin, '>>> ')
admin.sendline(current, 'node describe localnode')
expect(admin, 'node `localnode\'\n{.*}')
expect(admin, '>>> ')
admin.sendline(current, 'node load localnode')
expect(admin, 'load average.*\n')
expect(admin, '>>> ')
admin.sendline(current, 'node ping localnode')
expect(admin, 'node is up')
expect(admin, '>>> ')
admin.sendline(current, 'exit')
admin.stop(current, True)
current.writeln("ok")
except Exception as e:
admin.stop(current, False)
raise RuntimeError("failed!\n" + str(e))
routerProps= lambda process, current: {
'Glacier2.SessionTimeout' : 5,
'Glacier2.SessionManager' : 'TestIceGrid/AdminSessionManager',
'Glacier2.PermissionsVerifier' : 'Glacier2/NullPermissionsVerifier',
'Glacier2.SSLSessionManager' : 'TestIceGrid/AdminSSLSessionManager',
'Glacier2.SSLPermissionsVerifier' : 'Glacier2/NullSSLPermissionsVerifier',
'Ice.Default.Locator' : current.testcase.getLocator(current),
'IceSSL.VerifyPeer' : 1
}
if isinstance(platform, Windows) or os.getuid() != 0:
TestSuite(__file__, [ IceGridAdminTestCase() ], multihost=False)
|