Toggle navigation
Toggle navigation
This project
Loading...
Sign in
홍길동
/
onos
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Ayaka Koshibe
2014-09-25 12:31:52 -0700
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ee1c46772b229f0f676bd847dc56683c95c02283
ee1c4677
1 parent
bb42cad6
Test for role delivery
Change-Id: I202e7606b03bcb89effd57d07003c563de0b7b06
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
285 additions
and
1 deletions
core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
openflow/ctl/src/test/java/org/onlab/onos/openflow/controller/impl/RoleManagerTest.java
core/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
View file @
ee1c467
...
...
@@ -51,7 +51,7 @@ public interface DeviceProviderService extends ProviderService<DeviceProvider> {
* mastership role on the device.
*
* @param deviceId identity of the device
* @param role mastership role
being assert
ed
* @param role mastership role
that was asserted but fail
ed
*/
void
unableToAssertRole
(
DeviceId
deviceId
,
MastershipRole
role
);
...
...
openflow/ctl/src/test/java/org/onlab/onos/openflow/controller/impl/RoleManagerTest.java
0 → 100644
View file @
ee1c467
package
org
.
onlab
.
onos
.
openflow
.
controller
.
impl
;
import
java.io.IOException
;
import
java.util.List
;
import
org.jboss.netty.channel.Channel
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.onlab.onos.openflow.controller.RoleState
;
import
org.onlab.onos.openflow.controller.driver.OpenFlowAgent
;
import
org.onlab.onos.openflow.controller.driver.OpenFlowSwitchDriver
;
import
org.onlab.onos.openflow.controller.driver.RoleHandler
;
import
org.onlab.onos.openflow.controller.driver.RoleRecvStatus
;
import
org.onlab.onos.openflow.controller.driver.RoleReplyInfo
;
import
org.onlab.onos.openflow.controller.driver.SwitchStateException
;
import
org.projectfloodlight.openflow.protocol.OFDescStatsReply
;
import
org.projectfloodlight.openflow.protocol.OFErrorMsg
;
import
org.projectfloodlight.openflow.protocol.OFFactories
;
import
org.projectfloodlight.openflow.protocol.OFFactory
;
import
org.projectfloodlight.openflow.protocol.OFFeaturesReply
;
import
org.projectfloodlight.openflow.protocol.OFMessage
;
import
org.projectfloodlight.openflow.protocol.OFPortDesc
;
import
org.projectfloodlight.openflow.protocol.OFPortDescStatsReply
;
import
org.projectfloodlight.openflow.protocol.OFVersion
;
import
org.projectfloodlight.openflow.types.U64
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
onlab
.
onos
.
openflow
.
controller
.
RoleState
.*;
import
static
org
.
onlab
.
onos
.
openflow
.
controller
.
driver
.
RoleRecvStatus
.*;
public
class
RoleManagerTest
{
private
static
final
U64
GID
=
U64
.
of
(
10L
);
private
static
final
long
XID
=
1L
;
private
OpenFlowSwitchDriver
sw
;
private
RoleManager
manager
;
@Before
public
void
setUp
()
{
sw
=
new
TestSwitchDriver
();
manager
=
new
RoleManager
(
sw
);
}
@After
public
void
tearDown
()
{
manager
=
null
;
sw
=
null
;
}
@Test
public
void
deliverRoleReply
()
{
RoleRecvStatus
status
;
RoleReplyInfo
asserted
=
new
RoleReplyInfo
(
MASTER
,
GID
,
XID
);
RoleReplyInfo
unasserted
=
new
RoleReplyInfo
(
SLAVE
,
GID
,
XID
);
try
{
//call without sendRoleReq() for requestPending = false
//first, sw.role == null
status
=
manager
.
deliverRoleReply
(
asserted
);
assertEquals
(
"expectation wrong"
,
OTHER_EXPECTATION
,
status
);
sw
.
setRole
(
MASTER
);
assertEquals
(
"expectation wrong"
,
OTHER_EXPECTATION
,
status
);
sw
.
setRole
(
SLAVE
);
//match to pendingRole = MASTER, requestPending = true
manager
.
sendRoleRequest
(
MASTER
,
MATCHED_CURRENT_ROLE
);
status
=
manager
.
deliverRoleReply
(
asserted
);
assertEquals
(
"expectation wrong"
,
MATCHED_CURRENT_ROLE
,
status
);
//requestPending never gets reset -- this might be a bug.
status
=
manager
.
deliverRoleReply
(
unasserted
);
assertEquals
(
"expectation wrong"
,
OTHER_EXPECTATION
,
status
);
assertEquals
(
"pending role mismatch"
,
MASTER
,
((
TestSwitchDriver
)
sw
).
failed
);
}
catch
(
IOException
|
SwitchStateException
e
)
{
assertEquals
(
"unexpected error thrown"
,
SwitchStateException
.
class
,
e
.
getClass
());
}
}
private
class
TestSwitchDriver
implements
OpenFlowSwitchDriver
{
RoleState
failed
=
null
;
RoleState
current
=
null
;
@Override
public
void
sendMsg
(
OFMessage
msg
)
{
}
@Override
public
void
sendMsg
(
List
<
OFMessage
>
msgs
)
{
}
@Override
public
void
handleMessage
(
OFMessage
fromSwitch
)
{
}
@Override
public
void
setRole
(
RoleState
role
)
{
current
=
role
;
}
@Override
public
RoleState
getRole
()
{
return
current
;
}
@Override
public
List
<
OFPortDesc
>
getPorts
()
{
return
null
;
}
@Override
public
OFFactory
factory
()
{
// return what-ever triggers requestPending = true
return
OFFactories
.
getFactory
(
OFVersion
.
OF_10
);
}
@Override
public
String
getStringId
()
{
return
"100"
;
}
@Override
public
long
getId
()
{
return
0
;
}
@Override
public
String
manfacturerDescription
()
{
return
null
;
}
@Override
public
String
datapathDescription
()
{
return
null
;
}
@Override
public
String
hardwareDescription
()
{
return
null
;
}
@Override
public
String
softwareDescription
()
{
return
null
;
}
@Override
public
String
serialNumber
()
{
return
null
;
}
@Override
public
void
disconnectSwitch
()
{
}
@Override
public
void
returnRoleAssertFailure
(
RoleState
role
)
{
failed
=
role
;
}
@Override
public
void
setAgent
(
OpenFlowAgent
agent
)
{
}
@Override
public
void
setRoleHandler
(
RoleHandler
roleHandler
)
{
}
@Override
public
void
reassertRole
()
{
}
@Override
public
boolean
handleRoleError
(
OFErrorMsg
error
)
{
return
false
;
}
@Override
public
void
handleNiciraRole
(
OFMessage
m
)
throws
SwitchStateException
{
}
@Override
public
void
handleRole
(
OFMessage
m
)
throws
SwitchStateException
{
}
@Override
public
void
startDriverHandshake
()
{
}
@Override
public
boolean
isDriverHandshakeComplete
()
{
return
false
;
}
@Override
public
void
processDriverHandshakeMessage
(
OFMessage
m
)
{
}
@Override
public
boolean
connectSwitch
()
{
return
false
;
}
@Override
public
boolean
activateMasterSwitch
()
{
return
false
;
}
@Override
public
boolean
activateEqualSwitch
()
{
return
false
;
}
@Override
public
void
transitionToEqualSwitch
()
{
}
@Override
public
void
transitionToMasterSwitch
()
{
}
@Override
public
void
removeConnectedSwitch
()
{
}
@Override
public
void
setPortDescReply
(
OFPortDescStatsReply
portDescReply
)
{
}
@Override
public
void
setFeaturesReply
(
OFFeaturesReply
featuresReply
)
{
}
@Override
public
void
setSwitchDescription
(
OFDescStatsReply
desc
)
{
}
@Override
public
int
getNextTransactionId
()
{
return
(
int
)
XID
;
}
@Override
public
Boolean
supportNxRole
()
{
return
true
;
}
@Override
public
void
setOFVersion
(
OFVersion
ofV
)
{
}
@Override
public
void
setTableFull
(
boolean
full
)
{
}
@Override
public
void
setChannel
(
Channel
channel
)
{
}
@Override
public
void
setConnected
(
boolean
connected
)
{
}
@Override
public
boolean
isConnected
()
{
return
false
;
}
@Override
public
void
write
(
OFMessage
msg
)
{
}
@Override
public
void
write
(
List
<
OFMessage
>
msgs
)
{
}
}
}
Please
register
or
login
to post a comment