[Neo-report] r1790 gregory - in /trunk/neo: ./ admin/ master/handlers/ storage/handlers/ t...
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Feb 19 09:45:11 CET 2010
Author: gregory
Date: Fri Feb 19 09:45:11 2010
New Revision: 1790
Log:
Group error packets as done for other packets.
Modified:
trunk/neo/admin/app.py
trunk/neo/admin/handler.py
trunk/neo/handler.py
trunk/neo/master/handlers/administration.py
trunk/neo/protocol.py
trunk/neo/storage/handlers/__init__.py
trunk/neo/storage/handlers/verification.py
trunk/neo/tests/client/testClientApp.py
trunk/neo/tests/testProtocol.py
Modified: trunk/neo/admin/app.py
==============================================================================
--- trunk/neo/admin/app.py [iso-8859-1] (original)
+++ trunk/neo/admin/app.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -27,7 +27,7 @@
from neo.bootstrap import BootstrapManager
from neo.pt import PartitionTable
from neo import protocol
-from neo.protocol import NodeTypes, NodeStates, Packets
+from neo.protocol import NodeTypes, NodeStates, Packets, Errors
class Dispatcher:
"""Dispatcher use to redirect master request to handler"""
@@ -160,7 +160,7 @@
pass
row_list.append((offset, row))
except IndexError:
- p = protocol.protocolError('invalid partition table offset')
+ p = Errors.ProtocolError('invalid partition table offset')
conn.notify(p)
return
p = Packets.AnswerPartitionList(self.ptid, row_list)
Modified: trunk/neo/admin/handler.py
==============================================================================
--- trunk/neo/admin/handler.py [iso-8859-1] (original)
+++ trunk/neo/admin/handler.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -19,7 +19,7 @@
from neo.handler import EventHandler
from neo import protocol
-from neo.protocol import Packets
+from neo.protocol import Packets, Errors
from neo.exception import PrimaryFailure
from neo.util import dump
@@ -62,7 +62,7 @@
raise protocol.ProtocolError('invalid uuid')
if node.getState() == state and modify_partition_table is False:
# no change
- p = protocol.ack('no change')
+ p = Errors.Ack('no change')
conn.answer(p)
return
# forward to primary master node
@@ -213,8 +213,8 @@
Packets.AnswerNodeState(uuid, state))
def ack(self, conn, msg):
- self.__answerNeoCTL(conn, protocol.ack(msg))
+ self.__answerNeoCTL(conn, Errors.Ack(msg))
def protocolError(self, conn, msg):
- self.__answerNeoCTL(conn, protocol.protocolError(msg))
-
+ self.__answerNeoCTL(conn, Errors.ProtocolError(msg))
+
Modified: trunk/neo/handler.py
==============================================================================
--- trunk/neo/handler.py [iso-8859-1] (original)
+++ trunk/neo/handler.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -16,8 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from neo import logging
-from neo import protocol
-from neo.protocol import NodeStates, ErrorCodes, Packets
+from neo.protocol import NodeStates, ErrorCodes, Packets, Errors
from neo.protocol import PacketMalformedError, UnexpectedPacketError, \
BrokenNodeDisallowedError, NotReadyError, ProtocolError
@@ -34,7 +33,7 @@
"""Called when a packet is malformed."""
args = (conn.getAddress()[0], conn.getAddress()[1], message)
logging.error('malformed packet from %s:%d: %s', *args)
- response = protocol.protocolError(message)
+ response = Errors.ProtocolError(message)
conn.notify(response)
conn.abort()
self.peerBroken(conn)
@@ -48,7 +47,7 @@
message = 'unexpected packet: %s in %s' % (message,
self.__class__.__name__)
logging.error(message)
- conn.answer(protocol.protocolError(message))
+ conn.answer(Errors.ProtocolError(message))
conn.abort()
self.peerBroken(conn)
@@ -67,24 +66,24 @@
except PacketMalformedError, e:
self._packetMalformed(conn, *e.args)
except BrokenNodeDisallowedError:
- conn.answer(protocol.brokenNodeDisallowedError('go away'))
+ conn.answer(Errors.Broken('go away'))
conn.abort()
except NotReadyError, message:
if not message.args:
message = 'Retry Later'
message = str(message)
- conn.answer(protocol.notReady(message))
+ conn.answer(Errors.NotReady(message))
conn.abort()
except ProtocolError, message:
message = str(message)
- conn.answer(protocol.protocolError(message))
+ conn.answer(Errors.ProtocolError(message))
conn.abort()
def checkClusterName(self, name):
# raise an exception if the fiven name mismatch the current cluster name
if self.app.name != name:
logging.error('reject an alien cluster')
- raise protocol.ProtocolError('invalid cluster name')
+ raise ProtocolError('invalid cluster name')
# Network level handlers
Modified: trunk/neo/master/handlers/administration.py
==============================================================================
--- trunk/neo/master/handlers/administration.py [iso-8859-1] (original)
+++ trunk/neo/master/handlers/administration.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -17,9 +17,9 @@
from neo import logging
-from neo import protocol
from neo.master.handlers import MasterHandler
from neo.protocol import ClusterStates, NodeStates, Packets, ProtocolError
+from neo.protocol import Errors
from neo.util import dump
CLUSTER_STATE_WORKFLOW = {
@@ -57,7 +57,7 @@
self.app.changeClusterState(state)
# answer
- conn.answer(protocol.ack('cluster state changed'))
+ conn.answer(Errors.Ack('cluster state changed'))
if state == ClusterStates.STOPPING:
self.app.cluster_state = state
self.app.shutdown()
@@ -74,13 +74,13 @@
node.setState(state)
# get message for self
if state != NodeStates.RUNNING:
- p = protocol.ack('node state changed')
+ p = Errors.Ack('node state changed')
conn.answer(p)
app.shutdown()
if node.getState() == state:
# no change, just notify admin node
- p = protocol.ack('node state changed')
+ p = Errors.Ack('node state changed')
conn.answer(p)
return
@@ -119,7 +119,7 @@
node.setState(state)
# /!\ send the node information *after* the partition table change
- p = protocol.ack('state changed')
+ p = Errors.Ack('state changed')
conn.answer(p)
app.broadcastNodesInformation([node])
@@ -139,7 +139,7 @@
# nothing to do
if not uuid_set:
logging.warning('No nodes added')
- p = protocol.ack('no nodes added')
+ p = Errors.Ack('no nodes added')
conn.answer(p)
return
uuids = ', '.join([dump(uuid) for uuid in uuid_set])
@@ -158,5 +158,5 @@
s_conn.notify(Packets.StartOperation())
# broadcast the new partition table
app.broadcastPartitionChanges(cell_list)
- p = protocol.ack('node added')
+ p = Errors.Ack('node added')
conn.answer(p)
Modified: trunk/neo/protocol.py
==============================================================================
--- trunk/neo/protocol.py [iso-8859-1] (original)
+++ trunk/neo/protocol.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -1,4 +1,4 @@
-#
+
# Copyright (C) 2006-2010 Nexedi SA
#
# This program is free software; you can redistribute it and/or
@@ -1406,26 +1406,25 @@
# build a "singleton"
Packets = PacketRegistry()
-
-def _error(error_code, error_message):
- return Error(error_code, error_message)
-
-def ack(message):
- return _error(ErrorCodes.ACK, message)
-
-def protocolError(error_message):
- return _error(ErrorCodes.PROTOCOL_ERROR, 'protocol error: ' + error_message)
-
-def notReady(error_message):
- return _error(ErrorCodes.NOT_READY, 'not ready: ' + error_message)
-
-def brokenNodeDisallowedError(error_message):
- return _error(ErrorCodes.BROKEN_NODE,
- 'broken node disallowed error: ' + error_message)
-
-def oidNotFound(error_message):
- return _error(ErrorCodes.OID_NOT_FOUND, 'oid not found: ' + error_message)
-
-def tidNotFound(error_message):
- return _error(ErrorCodes.TID_NOT_FOUND, 'tid not found: ' + error_message)
-
+def register(code):
+ def wrapper(registry, message=''):
+ return Error(code, message)
+ return wrapper
+
+class ErrorRegistry(dict):
+ """
+ Error packet packet registry
+ """
+
+ def __init__(self):
+ dict.__init__(self)
+
+ Ack = register(ErrorCodes.ACK)
+ ProtocolError = register(ErrorCodes.PROTOCOL_ERROR)
+ TidNotFound = register(ErrorCodes.TID_NOT_FOUND)
+ OidNotFound = register(ErrorCodes.OID_NOT_FOUND)
+ NotReady = register(ErrorCodes.NOT_READY)
+ Broken = register(ErrorCodes.BROKEN_NODE)
+
+Errors = ErrorRegistry()
+
Modified: trunk/neo/storage/handlers/__init__.py
==============================================================================
--- trunk/neo/storage/handlers/__init__.py [iso-8859-1] (original)
+++ trunk/neo/storage/handlers/__init__.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -21,7 +21,7 @@
from neo import protocol
from neo.util import dump
from neo.exception import PrimaryFailure, OperationFailure
-from neo.protocol import NodeStates, Packets
+from neo.protocol import NodeStates, Packets, Errors
class BaseMasterHandler(EventHandler):
@@ -92,7 +92,7 @@
app = self.app
t = app.dm.getTransaction(tid)
if t is None:
- p = protocol.tidNotFound('%s does not exist' % dump(tid))
+ p = Errors.TidNotFound('%s does not exist' % dump(tid))
else:
p = Packets.AnswerTransactionInformation(tid, t[1], t[2], t[3],
t[0])
@@ -113,6 +113,6 @@
compression, checksum, data)
else:
logging.debug('oid = %s not found', dump(oid))
- p = protocol.oidNotFound('%s does not exist' % dump(oid))
+ p = Errors.OidNotFound('%s does not exist' % dump(oid))
conn.answer(p)
Modified: trunk/neo/storage/handlers/verification.py
==============================================================================
--- trunk/neo/storage/handlers/verification.py [iso-8859-1] (original)
+++ trunk/neo/storage/handlers/verification.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -18,8 +18,7 @@
from neo import logging
from neo.storage.handlers import BaseMasterHandler
-from neo import protocol
-from neo.protocol import Packets
+from neo.protocol import Packets, Errors, ProtocolError
from neo.util import dump
from neo.exception import OperationFailure
@@ -38,7 +37,7 @@
offset_list = xrange(0, self.app.pt.getPartitions())
else:
if max(offset_list) >= self.app.pt.getPartitions():
- raise protocol.ProtocolError('invalid partition table offset')
+ raise ProtocolError('invalid partition table offset')
# build a table with requested partitions
row_list = [(offset, [(cell.getUUID(), cell.getState())
@@ -73,7 +72,7 @@
app = self.app
t = app.dm.getTransaction(tid, all=True)
if t is None:
- p = protocol.tidNotFound('%s does not exist' % dump(tid))
+ p = Errors.TidNotFound('%s does not exist' % dump(tid))
else:
p = Packets.AnswerTransactionInformation(tid, t[1], t[2], t[3],
t[0])
@@ -83,7 +82,7 @@
if self.app.dm.objectPresent(oid, tid):
p = Packets.AnswerObjectPresent(oid, tid)
else:
- p = protocol.oidNotFound(
+ p = Errors.OidNotFound(
'%s:%s do not exist' % (dump(oid), dump(tid)))
conn.answer(p)
Modified: trunk/neo/tests/client/testClientApp.py
==============================================================================
--- trunk/neo/tests/client/testClientApp.py [iso-8859-1] (original)
+++ trunk/neo/tests/client/testClientApp.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -21,8 +21,7 @@
from neo.tests import NeoTestBase
from neo.client.app import Application
from neo.client.exception import NEOStorageError, NEOStorageNotFoundError
-from neo import protocol
-from neo.protocol import Packets, INVALID_TID, INVALID_SERIAL
+from neo.protocol import Packet, Packets, Errors, INVALID_TID, INVALID_SERIAL
from neo.util import makeChecksum
def _getMasterConnection(self):
@@ -78,7 +77,7 @@
self.assertEquals(len(calls), 1)
# client connection got queue as first parameter
packet = calls[0].getParam(1)
- self.assertTrue(isinstance(packet, protocol.Packet))
+ self.assertTrue(isinstance(packet, Packet))
self.assertEquals(packet.getType(), packet_type)
if decode:
return packet.decode()
@@ -215,7 +214,7 @@
an_object = (1, oid, tid1, tid2, 0, makeChecksum('OBJ'), 'OBJ')
# connection to SN close
self.assertTrue(oid not in mq)
- packet = protocol.oidNotFound('')
+ packet = Errors.OidNotFound('')
packet.setId(0)
cell = Mock({ 'getUUID': '\x00' * 16})
conn = Mock({'getUUID': '\x10' * 16,
@@ -232,7 +231,7 @@
Application._waitMessage = _waitMessage
# object not found in NEO -> NEOStorageNotFoundError
self.assertTrue(oid not in mq)
- packet = protocol.oidNotFound('')
+ packet = Errors.OidNotFound('')
packet.setId(0)
cell = Mock({ 'getUUID': '\x00' * 16})
conn = Mock({
@@ -274,7 +273,7 @@
tid2 = self.makeTID(2)
# object not found in NEO -> NEOStorageNotFoundError
self.assertTrue(oid not in mq)
- packet = protocol.oidNotFound('')
+ packet = Errors.OidNotFound('')
packet.setId(0)
cell = Mock({ 'getUUID': '\x00' * 16})
conn = Mock({
@@ -313,7 +312,7 @@
tid2 = self.makeTID(2)
# object not found in NEO -> NEOStorageNotFoundError
self.assertTrue(oid not in mq)
- packet = protocol.oidNotFound('')
+ packet = Errors.OidNotFound('')
packet.setId(0)
cell = Mock({ 'getUUID': '\x00' * 16})
conn = Mock({
@@ -734,7 +733,7 @@
self.askFinishTransaction(app)
# undo 1 -> no previous revision
u1p1 = Packets.AnswerTransactionInformation(tid1, '', '', '', (oid1, ))
- u1p2 = protocol.oidNotFound('oid not found')
+ u1p2 = Errors.OidNotFound('oid not found')
# undo 2 -> not end tid
u2p1 = Packets.AnswerTransactionInformation(tid2, '', '', '', (oid2, ))
u2p2 = Packets.AnswerObject(oid2, tid2, tid3, 0, makeChecksum('O2V1'), 'O2V1')
Modified: trunk/neo/tests/testProtocol.py
==============================================================================
--- trunk/neo/tests/testProtocol.py [iso-8859-1] (original)
+++ trunk/neo/tests/testProtocol.py [iso-8859-1] Fri Feb 19 09:45:11 2010
@@ -18,7 +18,7 @@
import unittest
from neo import protocol
from neo.protocol import NodeTypes, NodeStates, CellStates
-from neo.protocol import ErrorCodes, Packets
+from neo.protocol import ErrorCodes, Packets, Errors
from neo.tests import NeoTestBase
class ProtocolTests(NeoTestBase):
@@ -34,33 +34,33 @@
return self.ltid
def test_03_protocolError(self):
- p = protocol.protocolError("bad protocol")
+ p = Errors.ProtocolError("bad protocol")
error_code, error_msg = p.decode()
self.assertEqual(error_code, ErrorCodes.PROTOCOL_ERROR)
- self.assertEqual(error_msg, "protocol error: bad protocol")
+ self.assertEqual(error_msg, "bad protocol")
def test_05_notReady(self):
- p = protocol.notReady("wait")
+ p = Errors.NotReady("wait")
error_code, error_msg = p.decode()
self.assertEqual(error_code, ErrorCodes.NOT_READY)
- self.assertEqual(error_msg, "not ready: wait")
+ self.assertEqual(error_msg, "wait")
def test_06_brokenNodeDisallowedError(self):
- p = protocol.brokenNodeDisallowedError("broken")
+ p = Errors.Broken("broken")
error_code, error_msg = p.decode()
self.assertEqual(error_code, ErrorCodes.BROKEN_NODE)
- self.assertEqual(error_msg, "broken node disallowed error: broken")
+ self.assertEqual(error_msg, "broken")
def test_07_oidNotFound(self):
- p = protocol.oidNotFound("no oid")
+ p = Errors.OidNotFound("no oid")
error_code, error_msg = p.decode()
- self.assertEqual(error_msg, "oid not found: no oid")
+ self.assertEqual(error_msg, "no oid")
def test_08_oidNotFound(self):
- p = protocol.tidNotFound("no tid")
+ p = Errors.TidNotFound("no tid")
error_code, error_msg = p.decode()
self.assertEqual(error_code, ErrorCodes.TID_NOT_FOUND)
- self.assertEqual(error_msg, "tid not found: no tid")
+ self.assertEqual(error_msg, "no tid")
def test_09_ping(self):
p = Packets.Ping()
More information about the Neo-report
mailing list