Skip to content

Commit 2127bb3

Browse files
Move OnboardNetworkStackMock to a separate file
The mock was only used by EthernetInterface tests, but we can reuse it for other tests as well.
1 parent 1ddae9e commit 2127bb3

File tree

3 files changed

+98
-59
lines changed

3 files changed

+98
-59
lines changed

UNITTESTS/features/netsocket/EthernetInterface/test_EthernetInterface.cpp

Lines changed: 9 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
#include "gtest/gtest.h"
1919
#include "gmock/gmock.h"
20+
21+
#include "OnboardNetworkStack_mock.h"
22+
2023
#include "features/netsocket/EthernetInterface.h"
2124
#include <iostream>
2225

@@ -50,62 +53,9 @@ MBED_WEAK EMAC &EMAC::get_default_instance()
5053
return MockEMAC::get_instance();
5154
}
5255

53-
class EmacNetworkStackMock : public OnboardNetworkStack {
54-
public:
55-
MOCK_METHOD3(gethostbyname, nsapi_error_t(const char *host, SocketAddress *address, nsapi_version_t version));
56-
MOCK_METHOD1(add_dns_server, nsapi_error_t(const SocketAddress &address));
57-
MOCK_METHOD2(call_in, nsapi_error_t(int delay, mbed::Callback<void()> func));
58-
MOCK_METHOD2(socket_open, nsapi_error_t(nsapi_socket_t *handle, nsapi_protocol_t proto));
59-
MOCK_METHOD1(socket_close, nsapi_error_t(nsapi_socket_t handle));
60-
MOCK_METHOD2(socket_bind, nsapi_error_t(nsapi_socket_t handle, const SocketAddress &address));
61-
MOCK_METHOD2(socket_listen, nsapi_error_t(nsapi_socket_t handle, int backlog));
62-
MOCK_METHOD2(socket_connect, nsapi_error_t(nsapi_socket_t handle, const SocketAddress &address));
63-
MOCK_METHOD3(socket_accept, nsapi_error_t(nsapi_socket_t server, nsapi_socket_t *handle, SocketAddress *address));
64-
MOCK_METHOD3(socket_send, nsapi_error_t(nsapi_socket_t handle, const void *data, nsapi_size_t size));
65-
MOCK_METHOD3(socket_recv, nsapi_error_t(nsapi_socket_t handle, void *data, nsapi_size_t size));
66-
MOCK_METHOD4(socket_sendto, nsapi_error_t(nsapi_socket_t handle, const SocketAddress &address, const void *data, nsapi_size_t size));
67-
MOCK_METHOD4(socket_recvfrom, nsapi_error_t(nsapi_socket_t handle, SocketAddress *address, void *data, nsapi_size_t size));
68-
MOCK_METHOD5(setsockopt, nsapi_error_t(nsapi_socket_t handle, int level, int optname, const void *optval, unsigned optlen));
69-
MOCK_METHOD5(getsockopt, nsapi_error_t(nsapi_socket_t handle, int level, int optname, const void *optval, unsigned *optlen));
70-
MOCK_METHOD3(socket_attach, void(nsapi_socket_t handle, void (*callback)(void *), void *data));
71-
MOCK_METHOD3(add_ethernet_interface, nsapi_error_t(EMAC &emac, bool default_if, OnboardNetworkStack::Interface **interface_out));
72-
73-
static EmacNetworkStackMock &get_instance()
74-
{
75-
static EmacNetworkStackMock stackMock1;
76-
return stackMock1;
77-
}
78-
79-
class InterfaceMock : public OnboardNetworkStack::Interface {
80-
public:
81-
82-
static InterfaceMock &get_instance()
83-
{
84-
static InterfaceMock test_interface;
85-
return test_interface;
86-
}
87-
MOCK_METHOD6(bringup, nsapi_error_t(bool dhcp, const char *ip,
88-
const char *netmask, const char *gw,
89-
nsapi_ip_stack_t stack,
90-
bool blocking
91-
));
92-
MOCK_METHOD0(bringdown, nsapi_error_t());
93-
MOCK_METHOD1(attach, void(mbed::Callback<void(nsapi_event_t, intptr_t)> status_cb));
94-
MOCK_CONST_METHOD0(get_connection_status, nsapi_connection_status_t());
95-
MOCK_METHOD2(get_mac_address, char *(char *buf, nsapi_size_t buflen));
96-
MOCK_METHOD1(get_ip_address, nsapi_error_t(SocketAddress *address));
97-
MOCK_METHOD2(get_ip_address, char *(char *buf, nsapi_size_t buflen));
98-
MOCK_METHOD1(get_netmask, nsapi_error_t(SocketAddress *address));
99-
MOCK_METHOD2(get_netmask, char *(char *buf, nsapi_size_t buflen));
100-
MOCK_METHOD1(get_gateway, nsapi_error_t(SocketAddress *address));
101-
MOCK_METHOD2(get_gateway, char *(char *buf, nsapi_size_t buflen));
102-
MOCK_METHOD1(get_ipv6_link_local_address, nsapi_error_t(SocketAddress *address));
103-
};
104-
};
105-
10656
OnboardNetworkStack &OnboardNetworkStack::get_default_instance()
10757
{
108-
return EmacNetworkStackMock::get_instance();
58+
return OnboardNetworkStackMock::get_instance();
10959
}
11060

11161
// Implementaion in in NetworkInterfaceDefaults.cpp
@@ -126,15 +76,15 @@ using ::testing::SetArgReferee;
12676
class TestEthernetInterface: public testing::Test {
12777
protected:
12878
EthernetInterface *iface;
129-
EmacNetworkStackMock *stackMock;
79+
OnboardNetworkStackMock *stackMock;
13080
MockEMAC *emacMock;
131-
EmacNetworkStackMock::InterfaceMock *netStackIface;
81+
OnboardNetworkStackMock::InterfaceMock *netStackIface;
13282
virtual void SetUp()
13383
{
134-
stackMock = &EmacNetworkStackMock::get_instance();
84+
stackMock = &OnboardNetworkStackMock::get_instance();
13585
emacMock = &MockEMAC::get_instance();
136-
netStackIface = &EmacNetworkStackMock::InterfaceMock::get_instance();
137-
iface = new EthernetInterface(MockEMAC::get_instance(), EmacNetworkStackMock::get_instance());
86+
netStackIface = &OnboardNetworkStackMock::InterfaceMock::get_instance();
87+
iface = new EthernetInterface(MockEMAC::get_instance(), OnboardNetworkStackMock::get_instance());
13888
}
13989

14090
virtual void TearDown()

UNITTESTS/stubs/NetworkStack_stub.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@
2121
#include "netsocket/NetworkStack.h"
2222
#include <list>
2323

24+
/*
25+
* Note: If you want to:
26+
* - control and/or set expectations for the data returned/sent from/to the stack
27+
* - set expectations on the calls to NetworkStack
28+
* See OnboardNetworkStack_mock.h and its OnboardNetworkStackMock class.
29+
*/
30+
2431
class NetworkStackstub : public NetworkStack {
2532
public:
2633
std::list<nsapi_error_t> return_values;
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
* Copyright (c) 2019, Arm Limited and affiliates.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
#ifndef UNITTESTS_STUBS_ONBOARDNETWORKSTACK_MOCK_H_
19+
#define UNITTESTS_STUBS_ONBOARDNETWORKSTACK_MOCK_H_
20+
21+
#include "gtest/gtest.h"
22+
#include "gmock/gmock.h"
23+
24+
#include "netsocket/OnboardNetworkStack.h"
25+
26+
/*
27+
* Note: If all you need is a simple stub with basic return value control
28+
* consider using NetworkStack_stub.h and its NetworkStackstub class.
29+
*/
30+
31+
class OnboardNetworkStackMock : public OnboardNetworkStack {
32+
public:
33+
MOCK_METHOD3(gethostbyname, nsapi_error_t(const char *host, SocketAddress *address, nsapi_version_t version));
34+
MOCK_METHOD1(add_dns_server, nsapi_error_t(const SocketAddress &address));
35+
MOCK_METHOD2(call_in, nsapi_error_t(int delay, mbed::Callback<void()> func));
36+
MOCK_METHOD2(socket_open, nsapi_error_t(nsapi_socket_t *handle, nsapi_protocol_t proto));
37+
MOCK_METHOD1(socket_close, nsapi_error_t(nsapi_socket_t handle));
38+
MOCK_METHOD2(socket_bind, nsapi_error_t(nsapi_socket_t handle, const SocketAddress &address));
39+
MOCK_METHOD2(socket_listen, nsapi_error_t(nsapi_socket_t handle, int backlog));
40+
MOCK_METHOD2(socket_connect, nsapi_error_t(nsapi_socket_t handle, const SocketAddress &address));
41+
MOCK_METHOD3(socket_accept, nsapi_error_t(nsapi_socket_t server, nsapi_socket_t *handle, SocketAddress *address));
42+
MOCK_METHOD3(socket_send, nsapi_error_t(nsapi_socket_t handle, const void *data, nsapi_size_t size));
43+
MOCK_METHOD3(socket_recv, nsapi_error_t(nsapi_socket_t handle, void *data, nsapi_size_t size));
44+
MOCK_METHOD4(socket_sendto, nsapi_error_t(nsapi_socket_t handle, const SocketAddress &address, const void *data, nsapi_size_t size));
45+
MOCK_METHOD4(socket_recvfrom, nsapi_error_t(nsapi_socket_t handle, SocketAddress *address, void *data, nsapi_size_t size));
46+
MOCK_METHOD5(setsockopt, nsapi_error_t(nsapi_socket_t handle, int level, int optname, const void *optval, unsigned optlen));
47+
MOCK_METHOD5(getsockopt, nsapi_error_t(nsapi_socket_t handle, int level, int optname, const void *optval, unsigned *optlen));
48+
MOCK_METHOD3(socket_attach, void(nsapi_socket_t handle, void (*callback)(void *), void *data));
49+
MOCK_METHOD3(add_ethernet_interface, nsapi_error_t(EMAC &emac, bool default_if, OnboardNetworkStack::Interface **interface_out));
50+
51+
static OnboardNetworkStackMock &get_instance()
52+
{
53+
static OnboardNetworkStackMock stackMock1;
54+
return stackMock1;
55+
}
56+
57+
class InterfaceMock : public OnboardNetworkStack::Interface {
58+
public:
59+
60+
static InterfaceMock &get_instance()
61+
{
62+
static InterfaceMock test_interface;
63+
return test_interface;
64+
}
65+
MOCK_METHOD6(bringup, nsapi_error_t(bool dhcp, const char *ip,
66+
const char *netmask, const char *gw,
67+
nsapi_ip_stack_t stack,
68+
bool blocking
69+
));
70+
MOCK_METHOD0(bringdown, nsapi_error_t());
71+
MOCK_METHOD1(attach, void(mbed::Callback<void(nsapi_event_t, intptr_t)> status_cb));
72+
MOCK_CONST_METHOD0(get_connection_status, nsapi_connection_status_t());
73+
MOCK_METHOD2(get_mac_address, char *(char *buf, nsapi_size_t buflen));
74+
MOCK_METHOD2(get_ip_address, char *(char *buf, nsapi_size_t buflen));
75+
MOCK_METHOD1(get_ipv6_link_local_address, nsapi_error_t(SocketAddress *address));
76+
MOCK_METHOD2(get_netmask, char *(char *buf, nsapi_size_t buflen));
77+
MOCK_METHOD2(get_gateway, char *(char *buf, nsapi_size_t buflen));
78+
};
79+
};
80+
81+
82+
#endif /* UNITTESTS_STUBS_ONBOARDNETWORKSTACK_MOCK_H_ */

0 commit comments

Comments
 (0)