LCOV - code coverage report
Current view: top level - network/generator - test-network-generator.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 74 74 100.0 %
Date: 2019-08-23 13:36:53 Functions: 5 5 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 18 36 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : 
       3                 :            : #include "macro.h"
       4                 :            : #include "network-generator.h"
       5                 :            : #include "string-util.h"
       6                 :            : 
       7                 :         88 : static void test_network_one(const char *ifname, const char *key, const char *value, const char *expected) {
       8                 :         88 :         _cleanup_(context_clear) Context context = {};
       9                 :         88 :         _cleanup_free_ char *output = NULL;
      10                 :            :         Network *network;
      11                 :            : 
      12                 :         88 :         printf("# %s=%s\n", key, value);
      13         [ -  + ]:         88 :         assert_se(parse_cmdline_item(key, value, &context) >= 0);
      14         [ -  + ]:         88 :         assert_se(network = network_get(&context, ifname));
      15         [ -  + ]:         88 :         assert_se(network_format(network, &output) >= 0);
      16                 :         88 :         puts(output);
      17         [ -  + ]:         88 :         assert_se(streq(output, expected));
      18                 :         88 : }
      19                 :            : 
      20                 :         20 : static void test_network_two(const char *ifname,
      21                 :            :                              const char *key1, const char *value1,
      22                 :            :                              const char *key2, const char *value2,
      23                 :            :                              const char *expected) {
      24                 :         20 :         _cleanup_(context_clear) Context context = {};
      25                 :         20 :         _cleanup_free_ char *output = NULL;
      26                 :            :         Network *network;
      27                 :            : 
      28                 :         20 :         printf("# %s=%s\n", key1, value1);
      29                 :         20 :         printf("# %s=%s\n", key2, value2);
      30         [ -  + ]:         20 :         assert_se(parse_cmdline_item(key1, value1, &context) >= 0);
      31         [ -  + ]:         20 :         assert_se(parse_cmdline_item(key2, value2, &context) >= 0);
      32         [ -  + ]:         20 :         assert_se(context_merge_networks(&context) >= 0);
      33         [ -  + ]:         20 :         assert_se(network = network_get(&context, ifname));
      34         [ -  + ]:         20 :         assert_se(network_format(network, &output) >= 0);
      35                 :         20 :         puts(output);
      36         [ -  + ]:         20 :         assert_se(streq(output, expected));
      37                 :         20 : }
      38                 :            : 
      39                 :          4 : static void test_netdev_one(const char *ifname, const char *key, const char *value, const char *expected) {
      40                 :          4 :         _cleanup_(context_clear) Context context = {};
      41                 :          4 :         _cleanup_free_ char *output = NULL;
      42                 :            :         NetDev *netdev;
      43                 :            : 
      44                 :          4 :         printf("# %s=%s\n", key, value);
      45         [ -  + ]:          4 :         assert_se(parse_cmdline_item(key, value, &context) >= 0);
      46         [ -  + ]:          4 :         assert_se(netdev = netdev_get(&context, ifname));
      47         [ -  + ]:          4 :         assert_se(netdev_format(netdev, &output) >= 0);
      48                 :          4 :         puts(output);
      49         [ -  + ]:          4 :         assert_se(streq(output, expected));
      50                 :          4 : }
      51                 :            : 
      52                 :          4 : static void test_link_one(const char *ifname, const char *key, const char *value, const char *expected) {
      53                 :          4 :         _cleanup_(context_clear) Context context = {};
      54                 :          4 :         _cleanup_free_ char *output = NULL;
      55                 :            :         Link *link;
      56                 :            : 
      57                 :          4 :         printf("# %s=%s\n", key, value);
      58         [ -  + ]:          4 :         assert_se(parse_cmdline_item(key, value, &context) >= 0);
      59         [ -  + ]:          4 :         assert_se(link = link_get(&context, ifname));
      60         [ -  + ]:          4 :         assert_se(link_format(link, &output) >= 0);
      61                 :          4 :         puts(output);
      62         [ -  + ]:          4 :         assert_se(streq(output, expected));
      63                 :          4 : }
      64                 :            : 
      65                 :          4 : int main(int argc, char *argv[]) {
      66                 :          4 :         test_network_one("", "ip", "dhcp6",
      67                 :            :                          "[Match]\n"
      68                 :            :                          "Name=*\n"
      69                 :            :                          "\n[Link]\n"
      70                 :            :                          "\n[Network]\n"
      71                 :            :                          "DHCP=ipv6\n"
      72                 :            :                          "\n[DHCP]\n"
      73                 :            :                          );
      74                 :            : 
      75                 :          4 :         test_network_one("eth0", "ip", "eth0:dhcp",
      76                 :            :                          "[Match]\n"
      77                 :            :                          "Name=eth0\n"
      78                 :            :                          "\n[Link]\n"
      79                 :            :                          "\n[Network]\n"
      80                 :            :                          "DHCP=ipv4\n"
      81                 :            :                          "\n[DHCP]\n"
      82                 :            :                          );
      83                 :            : 
      84                 :          4 :         test_network_one("eth0", "ip", "eth0:dhcp:1530",
      85                 :            :                          "[Match]\n"
      86                 :            :                          "Name=eth0\n"
      87                 :            :                          "\n[Link]\n"
      88                 :            :                          "MTUBytes=1530\n"
      89                 :            :                          "\n[Network]\n"
      90                 :            :                          "DHCP=ipv4\n"
      91                 :            :                          "\n[DHCP]\n"
      92                 :            :                          );
      93                 :            : 
      94                 :          4 :         test_network_one("eth0", "ip", "eth0:dhcp:1530:00:11:22:33:44:55",
      95                 :            :                          "[Match]\n"
      96                 :            :                          "Name=eth0\n"
      97                 :            :                          "\n[Link]\n"
      98                 :            :                          "MACAddress=00:11:22:33:44:55\n"
      99                 :            :                          "MTUBytes=1530\n"
     100                 :            :                          "\n[Network]\n"
     101                 :            :                          "DHCP=ipv4\n"
     102                 :            :                          "\n[DHCP]\n"
     103                 :            :                          );
     104                 :            : 
     105                 :          4 :         test_network_one("eth0", "ip", "192.168.0.10::192.168.0.1:255.255.255.0:hogehoge:eth0:on",
     106                 :            :                          "[Match]\n"
     107                 :            :                          "Name=eth0\n"
     108                 :            :                          "\n[Link]\n"
     109                 :            :                          "\n[Network]\n"
     110                 :            :                          "DHCP=yes\n"
     111                 :            :                          "\n[DHCP]\n"
     112                 :            :                          "Hostname=hogehoge\n"
     113                 :            :                          "\n[Address]\n"
     114                 :            :                          "Address=192.168.0.10/24\n"
     115                 :            :                          "\n[Route]\n"
     116                 :            :                          "Gateway=192.168.0.1\n"
     117                 :            :                          );
     118                 :            : 
     119                 :          4 :         test_network_one("eth0", "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on",
     120                 :            :                          "[Match]\n"
     121                 :            :                          "Name=eth0\n"
     122                 :            :                          "\n[Link]\n"
     123                 :            :                          "\n[Network]\n"
     124                 :            :                          "DHCP=yes\n"
     125                 :            :                          "\n[DHCP]\n"
     126                 :            :                          "Hostname=hogehoge\n"
     127                 :            :                          "\n[Address]\n"
     128                 :            :                          "Address=192.168.0.10/24\n"
     129                 :            :                          "Peer=192.168.0.2\n"
     130                 :            :                          "\n[Route]\n"
     131                 :            :                          "Gateway=192.168.0.1\n"
     132                 :            :                          );
     133                 :            : 
     134                 :          4 :         test_network_one("eth0", "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:1530",
     135                 :            :                          "[Match]\n"
     136                 :            :                          "Name=eth0\n"
     137                 :            :                          "\n[Link]\n"
     138                 :            :                          "MTUBytes=1530\n"
     139                 :            :                          "\n[Network]\n"
     140                 :            :                          "DHCP=yes\n"
     141                 :            :                          "\n[DHCP]\n"
     142                 :            :                          "Hostname=hogehoge\n"
     143                 :            :                          "\n[Address]\n"
     144                 :            :                          "Address=192.168.0.10/24\n"
     145                 :            :                          "Peer=192.168.0.2\n"
     146                 :            :                          "\n[Route]\n"
     147                 :            :                          "Gateway=192.168.0.1\n"
     148                 :            :                          );
     149                 :            : 
     150                 :          4 :         test_network_one("eth0", "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:1530:00:11:22:33:44:55",
     151                 :            :                          "[Match]\n"
     152                 :            :                          "Name=eth0\n"
     153                 :            :                          "\n[Link]\n"
     154                 :            :                          "MACAddress=00:11:22:33:44:55\n"
     155                 :            :                          "MTUBytes=1530\n"
     156                 :            :                          "\n[Network]\n"
     157                 :            :                          "DHCP=yes\n"
     158                 :            :                          "\n[DHCP]\n"
     159                 :            :                          "Hostname=hogehoge\n"
     160                 :            :                          "\n[Address]\n"
     161                 :            :                          "Address=192.168.0.10/24\n"
     162                 :            :                          "Peer=192.168.0.2\n"
     163                 :            :                          "\n[Route]\n"
     164                 :            :                          "Gateway=192.168.0.1\n"
     165                 :            :                          );
     166                 :            : 
     167                 :          4 :         test_network_one("eth0", "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:10.10.10.10",
     168                 :            :                          "[Match]\n"
     169                 :            :                          "Name=eth0\n"
     170                 :            :                          "\n[Link]\n"
     171                 :            :                          "\n[Network]\n"
     172                 :            :                          "DHCP=yes\n"
     173                 :            :                          "DNS=10.10.10.10\n"
     174                 :            :                          "\n[DHCP]\n"
     175                 :            :                          "Hostname=hogehoge\n"
     176                 :            :                          "\n[Address]\n"
     177                 :            :                          "Address=192.168.0.10/24\n"
     178                 :            :                          "Peer=192.168.0.2\n"
     179                 :            :                          "\n[Route]\n"
     180                 :            :                          "Gateway=192.168.0.1\n"
     181                 :            :                          );
     182                 :            : 
     183                 :          4 :         test_network_one("eth0", "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:10.10.10.10:10.10.10.11",
     184                 :            :                          "[Match]\n"
     185                 :            :                          "Name=eth0\n"
     186                 :            :                          "\n[Link]\n"
     187                 :            :                          "\n[Network]\n"
     188                 :            :                          "DHCP=yes\n"
     189                 :            :                          "DNS=10.10.10.10\n"
     190                 :            :                          "DNS=10.10.10.11\n"
     191                 :            :                          "\n[DHCP]\n"
     192                 :            :                          "Hostname=hogehoge\n"
     193                 :            :                          "\n[Address]\n"
     194                 :            :                          "Address=192.168.0.10/24\n"
     195                 :            :                          "Peer=192.168.0.2\n"
     196                 :            :                          "\n[Route]\n"
     197                 :            :                          "Gateway=192.168.0.1\n"
     198                 :            :                          );
     199                 :            : 
     200                 :          4 :         test_network_one("eth0", "ip", "[2001:1234:56:8f63::10]::[2001:1234:56:8f63::1]:64:hogehoge:eth0:on",
     201                 :            :                          "[Match]\n"
     202                 :            :                          "Name=eth0\n"
     203                 :            :                          "\n[Link]\n"
     204                 :            :                          "\n[Network]\n"
     205                 :            :                          "DHCP=yes\n"
     206                 :            :                          "\n[DHCP]\n"
     207                 :            :                          "Hostname=hogehoge\n"
     208                 :            :                          "\n[Address]\n"
     209                 :            :                          "Address=2001:1234:56:8f63::10/64\n"
     210                 :            :                          "\n[Route]\n"
     211                 :            :                          "Gateway=2001:1234:56:8f63::1\n"
     212                 :            :                          );
     213                 :            : 
     214                 :          4 :         test_network_one("eth0", "ip", "[2001:1234:56:8f63::10]:[2001:1234:56:8f63::2]:[2001:1234:56:8f63::1]:64:hogehoge:eth0:on",
     215                 :            :                          "[Match]\n"
     216                 :            :                          "Name=eth0\n"
     217                 :            :                          "\n[Link]\n"
     218                 :            :                          "\n[Network]\n"
     219                 :            :                          "DHCP=yes\n"
     220                 :            :                          "\n[DHCP]\n"
     221                 :            :                          "Hostname=hogehoge\n"
     222                 :            :                          "\n[Address]\n"
     223                 :            :                          "Address=2001:1234:56:8f63::10/64\n"
     224                 :            :                          "Peer=2001:1234:56:8f63::2\n"
     225                 :            :                          "\n[Route]\n"
     226                 :            :                          "Gateway=2001:1234:56:8f63::1\n"
     227                 :            :                          );
     228                 :            : 
     229                 :          4 :         test_network_one("", "rd.route", "10.1.2.3/16:10.0.2.3",
     230                 :            :                          "[Match]\n"
     231                 :            :                          "Name=*\n"
     232                 :            :                          "\n[Link]\n"
     233                 :            :                          "\n[Network]\n"
     234                 :            :                          "\n[DHCP]\n"
     235                 :            :                          "\n[Route]\n"
     236                 :            :                          "Destination=10.1.2.3/16\n"
     237                 :            :                          "Gateway=10.0.2.3\n"
     238                 :            :                          );
     239                 :            : 
     240                 :          4 :         test_network_one("eth0", "rd.route", "10.1.2.3/16:10.0.2.3:eth0",
     241                 :            :                          "[Match]\n"
     242                 :            :                          "Name=eth0\n"
     243                 :            :                          "\n[Link]\n"
     244                 :            :                          "\n[Network]\n"
     245                 :            :                          "\n[DHCP]\n"
     246                 :            :                          "\n[Route]\n"
     247                 :            :                          "Destination=10.1.2.3/16\n"
     248                 :            :                          "Gateway=10.0.2.3\n"
     249                 :            :                          );
     250                 :            : 
     251                 :          4 :         test_network_one("", "nameserver", "10.1.2.3",
     252                 :            :                          "[Match]\n"
     253                 :            :                          "Name=*\n"
     254                 :            :                          "\n[Link]\n"
     255                 :            :                          "\n[Network]\n"
     256                 :            :                          "DNS=10.1.2.3\n"
     257                 :            :                          "\n[DHCP]\n"
     258                 :            :                          );
     259                 :            : 
     260                 :          4 :         test_network_one("", "rd.peerdns", "0",
     261                 :            :                          "[Match]\n"
     262                 :            :                          "Name=*\n"
     263                 :            :                          "\n[Link]\n"
     264                 :            :                          "\n[Network]\n"
     265                 :            :                          "\n[DHCP]\n"
     266                 :            :                          "UseDNS=no\n"
     267                 :            :                          );
     268                 :            : 
     269                 :          4 :         test_network_one("", "rd.peerdns", "1",
     270                 :            :                          "[Match]\n"
     271                 :            :                          "Name=*\n"
     272                 :            :                          "\n[Link]\n"
     273                 :            :                          "\n[Network]\n"
     274                 :            :                          "\n[DHCP]\n"
     275                 :            :                          "UseDNS=yes\n"
     276                 :            :                          );
     277                 :            : 
     278                 :          4 :         test_network_one("eth0", "vlan", "vlan99:eth0",
     279                 :            :                          "[Match]\n"
     280                 :            :                          "Name=eth0\n"
     281                 :            :                          "\n[Link]\n"
     282                 :            :                          "\n[Network]\n"
     283                 :            :                          "VLAN=vlan99\n"
     284                 :            :                          "\n[DHCP]\n"
     285                 :            :                          );
     286                 :            : 
     287                 :          4 :         test_network_one("eth0", "bridge", "bridge99:eth0,eth1",
     288                 :            :                          "[Match]\n"
     289                 :            :                          "Name=eth0\n"
     290                 :            :                          "\n[Link]\n"
     291                 :            :                          "\n[Network]\n"
     292                 :            :                          "Bridge=bridge99\n"
     293                 :            :                          "\n[DHCP]\n"
     294                 :            :                          );
     295                 :            : 
     296                 :          4 :         test_network_one("eth1", "bridge", "bridge99:eth0,eth1",
     297                 :            :                          "[Match]\n"
     298                 :            :                          "Name=eth1\n"
     299                 :            :                          "\n[Link]\n"
     300                 :            :                          "\n[Network]\n"
     301                 :            :                          "Bridge=bridge99\n"
     302                 :            :                          "\n[DHCP]\n"
     303                 :            :                          );
     304                 :            : 
     305                 :          4 :         test_network_one("eth0", "bond", "bond99:eth0,eth1",
     306                 :            :                          "[Match]\n"
     307                 :            :                          "Name=eth0\n"
     308                 :            :                          "\n[Link]\n"
     309                 :            :                          "\n[Network]\n"
     310                 :            :                          "Bond=bond99\n"
     311                 :            :                          "\n[DHCP]\n"
     312                 :            :                          );
     313                 :            : 
     314                 :          4 :         test_network_one("eth1", "bond", "bond99:eth0,eth1::1530",
     315                 :            :                          "[Match]\n"
     316                 :            :                          "Name=eth1\n"
     317                 :            :                          "\n[Link]\n"
     318                 :            :                          "\n[Network]\n"
     319                 :            :                          "Bond=bond99\n"
     320                 :            :                          "\n[DHCP]\n"
     321                 :            :                          );
     322                 :            : 
     323                 :          4 :         test_netdev_one("bond99", "bond", "bond99:eth0,eth1::1530",
     324                 :            :                         "[NetDev]\n"
     325                 :            :                         "Kind=bond\n"
     326                 :            :                         "Name=bond99\n"
     327                 :            :                         "MTUBytes=1530\n"
     328                 :            :                         );
     329                 :            : 
     330                 :          4 :         test_link_one("hogehoge", "ifname", "hogehoge:00:11:22:33:44:55",
     331                 :            :                       "[Match]\n"
     332                 :            :                       "MACAddress=00:11:22:33:44:55\n"
     333                 :            :                       "\n[Link]\n"
     334                 :            :                       "Name=hogehoge\n"
     335                 :            :                       );
     336                 :            : 
     337                 :          4 :         test_network_two("eth0",
     338                 :            :                          "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:10.10.10.10:10.10.10.11",
     339                 :            :                          "rd.route", "10.1.2.3/16:10.0.2.3",
     340                 :            :                          "[Match]\n"
     341                 :            :                          "Name=eth0\n"
     342                 :            :                          "\n[Link]\n"
     343                 :            :                          "\n[Network]\n"
     344                 :            :                          "DHCP=yes\n"
     345                 :            :                          "DNS=10.10.10.10\n"
     346                 :            :                          "DNS=10.10.10.11\n"
     347                 :            :                          "\n[DHCP]\n"
     348                 :            :                          "Hostname=hogehoge\n"
     349                 :            :                          "\n[Address]\n"
     350                 :            :                          "Address=192.168.0.10/24\n"
     351                 :            :                          "Peer=192.168.0.2\n"
     352                 :            :                          "\n[Route]\n"
     353                 :            :                          "Destination=10.1.2.3/16\n"
     354                 :            :                          "Gateway=10.0.2.3\n"
     355                 :            :                          "\n[Route]\n"
     356                 :            :                          "Gateway=192.168.0.1\n"
     357                 :            :                          );
     358                 :            : 
     359                 :          4 :         test_network_two("eth0",
     360                 :            :                          "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on",
     361                 :            :                          "nameserver", "10.1.2.3",
     362                 :            :                          "[Match]\n"
     363                 :            :                          "Name=eth0\n"
     364                 :            :                          "\n[Link]\n"
     365                 :            :                          "\n[Network]\n"
     366                 :            :                          "DHCP=yes\n"
     367                 :            :                          "DNS=10.1.2.3\n"
     368                 :            :                          "\n[DHCP]\n"
     369                 :            :                          "Hostname=hogehoge\n"
     370                 :            :                          "\n[Address]\n"
     371                 :            :                          "Address=192.168.0.10/24\n"
     372                 :            :                          "Peer=192.168.0.2\n"
     373                 :            :                          "\n[Route]\n"
     374                 :            :                          "Gateway=192.168.0.1\n"
     375                 :            :                          );
     376                 :            : 
     377                 :          4 :         test_network_two("eth0",
     378                 :            :                          "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:10.10.10.10:10.10.10.11",
     379                 :            :                          "nameserver", "10.1.2.3",
     380                 :            :                          "[Match]\n"
     381                 :            :                          "Name=eth0\n"
     382                 :            :                          "\n[Link]\n"
     383                 :            :                          "\n[Network]\n"
     384                 :            :                          "DHCP=yes\n"
     385                 :            :                          "DNS=10.10.10.10\n"
     386                 :            :                          "DNS=10.10.10.11\n"
     387                 :            :                          "DNS=10.1.2.3\n"
     388                 :            :                          "\n[DHCP]\n"
     389                 :            :                          "Hostname=hogehoge\n"
     390                 :            :                          "\n[Address]\n"
     391                 :            :                          "Address=192.168.0.10/24\n"
     392                 :            :                          "Peer=192.168.0.2\n"
     393                 :            :                          "\n[Route]\n"
     394                 :            :                          "Gateway=192.168.0.1\n"
     395                 :            :                          );
     396                 :            : 
     397                 :          4 :         test_network_two("eth0",
     398                 :            :                          "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:10.10.10.10:10.10.10.11",
     399                 :            :                          "rd.peerdns", "1",
     400                 :            :                          "[Match]\n"
     401                 :            :                          "Name=eth0\n"
     402                 :            :                          "\n[Link]\n"
     403                 :            :                          "\n[Network]\n"
     404                 :            :                          "DHCP=yes\n"
     405                 :            :                          "DNS=10.10.10.10\n"
     406                 :            :                          "DNS=10.10.10.11\n"
     407                 :            :                          "\n[DHCP]\n"
     408                 :            :                          "Hostname=hogehoge\n"
     409                 :            :                          "UseDNS=yes\n"
     410                 :            :                          "\n[Address]\n"
     411                 :            :                          "Address=192.168.0.10/24\n"
     412                 :            :                          "Peer=192.168.0.2\n"
     413                 :            :                          "\n[Route]\n"
     414                 :            :                          "Gateway=192.168.0.1\n"
     415                 :            :                          );
     416                 :            : 
     417                 :          4 :         test_network_two("eth0",
     418                 :            :                          "ip", "192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:hogehoge:eth0:on:10.10.10.10:10.10.10.11",
     419                 :            :                          "bridge", "bridge99:eth0,eth1",
     420                 :            :                          "[Match]\n"
     421                 :            :                          "Name=eth0\n"
     422                 :            :                          "\n[Link]\n"
     423                 :            :                          "\n[Network]\n"
     424                 :            :                          "DHCP=yes\n"
     425                 :            :                          "DNS=10.10.10.10\n"
     426                 :            :                          "DNS=10.10.10.11\n"
     427                 :            :                          "Bridge=bridge99\n"
     428                 :            :                          "\n[DHCP]\n"
     429                 :            :                          "Hostname=hogehoge\n"
     430                 :            :                          "\n[Address]\n"
     431                 :            :                          "Address=192.168.0.10/24\n"
     432                 :            :                          "Peer=192.168.0.2\n"
     433                 :            :                          "\n[Route]\n"
     434                 :            :                          "Gateway=192.168.0.1\n"
     435                 :            :                          );
     436                 :            : 
     437                 :          4 :         return 0;
     438                 :            : }

Generated by: LCOV version 1.14