]> git.meshlink.io Git - meshlink/commitdiff
Remove old tests for tinc 1.1 and add a basic test for MeshLink.
authorGuus Sliepen <guus@meshlink.io>
Sun, 25 May 2014 19:44:41 +0000 (21:44 +0200)
committerGuus Sliepen <guus@meshlink.io>
Sun, 25 May 2014 19:44:41 +0000 (21:44 +0200)
12 files changed:
test/Makefile.am
test/basic.test
test/commandline.test [deleted file]
test/executables.test [deleted file]
test/import-export.test [deleted file]
test/invite-join.test [deleted file]
test/ns-ping.test [deleted file]
test/ping.test [deleted file]
test/pong.c [deleted file]
test/sptps-basic.test [deleted file]
test/testlib.sh [deleted file]
test/variables.test [deleted file]

index 5457b2fcd6b919a253ee71ce1e0d620f8614e98c..2b72a0a49b9885f0b905d177c8eb32c1c562cda2 100644 (file)
@@ -1,24 +1,11 @@
 TESTS = \
-       basic.test \
-       commandline.test \
-       executables.test \
-       import-export.test \
-       invite-join.test \
-       ns-ping.test \
-       ping.test \
-       sptps-basic.test \
-       variables.test
+       basic.test
 
 dist_check_SCRIPTS = $(TESTS)
 
-EXTRA_DIST = testlib.sh
+AM_CPPFLAGS = -I../src
 
-check_PROGRAMS = pong
+check_PROGRAMS = basic
 
-pong_SOURCES = pong.c
-
-clean-local:
-       -for pid in *.test.?/pid; do ../src/tinc --pidfile="$$pid" stop; done
-       -killall ../src/sptps_test
-       -killall pong
-       -rm -rf *.test.?
+basic_SOURCES = basic.c
+basic_LDADD = ../src/libmeshlink.la
index b181e7540c7298878dfeb6d6bf24d3e2c93d8c71..e67c92a485ffda18cdc669d139d70b3a0054623f 100755 (executable)
@@ -1,20 +1,4 @@
 #!/bin/sh
 
-. ./testlib.sh
-
-# Initialize and test one node
-
-$tinc $c1 init foo
-$tinc $c1 set DeviceType dummy
-$tinc $c1 set Port 0
-
-# Test running in the foreground
-
-(sleep 1; $tinc $c1 stop) &
-$tinc $c1 start $r1 -D
-
-# Test running tinc in the background
-
-$tinc $c1 start $r1
-sleep 1
-$tinc $c1 stop
+rm -Rf basic_conf
+./basic
diff --git a/test/commandline.test b/test/commandline.test
deleted file mode 100755 (executable)
index e95c953..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Initialize one node
-
-$tinc $c1 <<EOF
-init foo
-set DeviceType dummy
-set Port 0
-EOF
-
-cat >$d1/tinc-up <<EOF
-#!/bin/sh
-read pid rest <$d1/pid
-(sleep 0.1; kill \$pid) &
-EOF
-
-# Test tincd command line options that should work
-
-$tincd $c1 $r1 -D
-$tincd $c1 $r1 --no-detach
-$tincd $c1 $r1 -D -d
-$tincd $c1 $r1 -D -d2
-$tincd $c1 $r1 -D -d 2
-$tincd $c1 $r1 -D -n foo
-$tincd $c1 $r1 -D -nfoo
-$tincd $c1 $r1 -D --net=foo
-$tincd $c1 $r1 -D --net foo
-
-# Test tincd command line options that should not work
-
-$tincd $c1 $r1 foo && exit 1 || true
-$tincd $c1 $r1 --pidfile && exit 1 || true
-$tincd $c1 $r1 --foo && exit 1 || true
-
-# Test tinc command line options that should work
-
-$tinc $c1 get name
-$tinc $c1 -n foo get name
-$tinc $c1 -nfoo get name
-$tinc $c1 --net=foo get name
-$tinc $c1 --net foo get name
-
-# Test tinc command line options that should not work
-
-$tinc $c1 --net && exit 1 || true
-$tinc $c1 --net get name && exit 1 || true
-$tinc $c1 foo && exit 1 || true
diff --git a/test/executables.test b/test/executables.test
deleted file mode 100755 (executable)
index 35dd2bc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Just test whether the executables work
-$tincd --help
-$tinc --help
-$sptps_test --help
diff --git a/test/import-export.test b/test/import-export.test
deleted file mode 100755 (executable)
index 6b5641c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Initialize three nodes
-
-$tinc $c1 <<EOF
-init foo
-set DeviceType dummy
-set Port 32752
-set Address localhost
-EOF
-
-$tinc $c2 <<EOF
-init bar
-set DeviceType dummy
-set Port 0
-EOF
-
-$tinc $c3 <<EOF
-init baz
-set DeviceType dummy
-set Port 0
-EOF
-
-# Test import, export and exchange commands
-
-$tinc $c1 export | $tinc $c2 exchange | $tinc $c1 import
-
-# Test export-all and exchange-all
-
-$tinc $c1 export-all | $tinc $c3 exchange | $tinc $c1 import
-$tinc $c1 exchange-all </dev/null | $tinc $c2 import
-
-# Test equivalence of host config files
-
-cmp $d1/hosts/foo $d2/hosts/foo
-cmp $d1/hosts/foo $d3/hosts/foo
-cmp $d1/hosts/bar $d2/hosts/bar
-cmp $d1/hosts/bar $d3/hosts/bar
-cmp $d1/hosts/baz $d2/hosts/baz
-cmp $d1/hosts/baz $d3/hosts/baz
-
-# Check whether the nodes can connect to each other
-
-$tinc $c1 start $r1
-
-$tinc $c2 add ConnectTo foo
-$tinc $c3 add ConnectTo foo
-
-sleep 1
-
-$tinc $c2 start $r2
-$tinc $c3 start $r3
-
-sleep 1
-
-test `$tinc $c1 dump reachable nodes | wc -l` = 3
-test `$tinc $c2 dump reachable nodes | wc -l` = 3
-test `$tinc $c3 dump reachable nodes | wc -l` = 3
-
-$tinc $c3 stop
-$tinc $c2 stop
-$tinc $c1 stop
diff --git a/test/invite-join.test b/test/invite-join.test
deleted file mode 100755 (executable)
index dbe6f8a..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Initialize one node
-
-$tinc $c1 <<EOF
-init foo
-set DeviceType dummy
-set Mode switch
-set Broadcast no
-del Port
-set Address localhost
-set Port 32751
-start $r1
-EOF
-
-# Generate an invitation and let another node join the VPN
-
-sleep 1
-
-$tinc $c1 invite bar | $tinc $c2 join
-
-# Test equivalence of host config files
-
-cmp $d1/hosts/foo $d2/hosts/foo
-test "`grep ^ECDSAPublicKey $d1/hosts/bar`" = "`grep ^ECDSAPublicKey $d2/hosts/bar`"
-
-# Test Mode, Broadcast and ConnectTo statements
-
-test `$tinc $c2 get Mode` = switch
-test `$tinc $c2 get Broadcast` = no
-test `$tinc $c2 get ConnectTo` = foo
-
-# Check whether the new node can join the VPN
-
-$tinc $c2 << EOF
-set DeviceType dummy
-set Port 0
-start $r2
-EOF
-
-sleep 1
-
-test `$tinc $c1 dump reachable nodes | wc -l` = 2
-test `$tinc $c2 dump reachable nodes | wc -l` = 2
-
-$tinc $c2 stop
-$tinc $c1 stop
diff --git a/test/ns-ping.test b/test/ns-ping.test
deleted file mode 100755 (executable)
index d5f9c7f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Skip this test if we aren't root or if "ip netns" does not exist
-
-test "`id -u`" = "0" || exit 77
-ip netns list || exit 77
-
-# Initialize two nodes
-
-$tinc $c1 <<EOF
-init foo
-set Mode switch
-set Interface ping.test1
-set Port 32573
-set Address localhost
-EOF
-
-cat >$d1/tinc-up <<EOF
-#!/bin/sh
-ip netns add ping.test1
-ip link set dev \$INTERFACE netns ping.test1
-ip netns exec ping.test1 ip addr add 192.168.1.1/24 dev \$INTERFACE
-ip netns exec ping.test1 ip link set \$INTERFACE up
-EOF
-
-$tinc $c2 <<EOF
-init bar
-set Mode switch
-set Interface ping.test2
-set Port 32574
-EOF
-
-cat >$d2/tinc-up <<EOF
-#!/bin/sh
-ip netns add ping.test2
-ip link set dev \$INTERFACE netns ping.test2
-ip netns exec ping.test2 ip addr add 192.168.1.2/24 dev \$INTERFACE
-ip netns exec ping.test2 ip link set \$INTERFACE up
-EOF
-
-# Exchange configuration files
-
-$tinc $c1 export | $tinc $c2 exchange | $tinc $c1 import
-
-# Start tinc
-
-$tinc $c1 start $r1
-$tinc $c2 start $r2
-
-sleep 1
-
-# The nodes should not be able to ping each other if there is no connection
-
-ip netns exec ping.test1 ping -W1 -c3 192.168.1.2 && exit 1
-
-# After connecting they should be
-
-$tinc $c2 add ConnectTo foo
-sleep 1
-
-ip netns exec ping.test1 ping -W1 -c3 192.168.1.2
-
-# Clean up
-
-$tinc $c2 stop
-$tinc $c1 stop
-ip netns del ping.test2
-ip netns del ping.test1
diff --git a/test/ping.test b/test/ping.test
deleted file mode 100755 (executable)
index 7e1a136..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Skip this test if we aren't root
-
-test "`id -u`" = "0" || exit 77
-
-# Initialize two nodes
-
-$tinc $c1 <<EOF
-init foo
-set Mode switch
-set Interface ping.test
-set Port 32573
-set Address localhost
-EOF
-
-cat >$d1/tinc-up <<EOF
-#!/bin/sh
-ifconfig \$INTERFACE up
-EOF
-
-$tinc $c2 <<EOF
-init bar
-set Mode switch
-set DeviceType multicast
-set Device 233.252.0.1 32754
-add ConnectTo foo
-EOF
-
-# Exchange configuration files
-
-$tinc $c1 export | $tinc $c2 exchange | $tinc $c1 import
-
-# Ensure we have a working multicast route
-
-ip route replace 233.252.0.0/16 dev lo
-
-# Start pong program in background
-
-./pong 233.252.0.1 32754 10.6.5.5 &
-pong=$!
-
-# Start tinc and try to ping
-
-$tinc $c1 start $r1
-$tinc $c2 start $r2
-
-sleep 1
-
-ping -r -I ping.test -c3 10.6.5.5
-
-# Clean up
-
-kill $pong
-$tinc $c2 stop
-$tinc $c1 stop
diff --git a/test/pong.c b/test/pong.c
deleted file mode 100644 (file)
index 80d4ca6..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
-    pong.c -- ICMP echo reply generator
-    Copyright (C) 2013 Guus Sliepen <guus@meshlink.io>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-
-#include "../src/system.h"
-
-uint8_t mymac[6] = {6, 5, 5, 6, 5, 5};
-
-static ssize_t do_arp(uint8_t *buf, ssize_t len, struct sockaddr_in *in) {
-       struct ether_arp arp;
-       memcpy(&arp, buf + 14, sizeof arp);
-
-       // Is it a valid ARP request?
-       if(ntohs(arp.arp_hrd) != ARPHRD_ETHER || ntohs(arp.arp_pro) != ETH_P_IP || arp.arp_hln != ETH_ALEN || arp.arp_pln != sizeof in->sin_addr.s_addr || ntohs(arp.arp_op) != ARPOP_REQUEST)
-               return 0;
-
-       // Does it match our address?
-       if(memcmp(&in->sin_addr.s_addr, arp.arp_tpa, 4))
-               return 0;
-
-       // Swap addresses
-       memcpy(buf, buf + 6, 6);
-       memcpy(buf + 6, mymac, 6);
-
-       arp.arp_op = htons(ARPOP_REPLY);
-       memcpy(arp.arp_tpa, arp.arp_spa, sizeof arp.arp_tpa);
-       memcpy(arp.arp_tha, arp.arp_sha, sizeof arp.arp_tha);
-       memcpy(arp.arp_spa, &in->sin_addr.s_addr, sizeof in->sin_addr.s_addr);
-       memcpy(arp.arp_sha, mymac, 6);
-
-       memcpy(buf + 14, &arp, sizeof arp);
-
-       return len;
-}
-
-static ssize_t do_ipv4(uint8_t *buf, ssize_t len, struct sockaddr_in *in) {
-       struct ip ip;
-       struct icmp icmp;
-
-       // Does it match our address?
-       if(memcmp(buf, mymac, 6))
-               return 0;
-
-       memcpy(&ip, buf + 14, sizeof ip);
-       if(memcmp(&ip.ip_dst, &in->sin_addr.s_addr, 4))
-               return 0;
-
-       // Is it an ICMP echo request?
-       if(ip.ip_p != IPPROTO_ICMP)
-               return 0;
-
-       memcpy(&icmp, buf + 14 + sizeof ip, sizeof icmp);
-       if(icmp.icmp_type != ICMP_ECHO)
-               return 0;
-
-       // Return an echo reply
-       memcpy(buf, buf + 6, 6);
-       memcpy(buf + 6, mymac, 6);
-
-       ip.ip_dst = ip.ip_src;
-       memcpy(&ip.ip_src, &in->sin_addr.s_addr, 4);
-
-       icmp.icmp_type = ICMP_ECHOREPLY;
-
-       memcpy(buf + 14, &ip, sizeof ip);
-       memcpy(buf + 14 + sizeof ip, &icmp, sizeof icmp);
-
-       return len;
-}
-
-static ssize_t do_ipv6(uint8_t *buf, ssize_t len, struct sockaddr_in6 *in) {
-       return 0;
-}
-
-int main(int argc, char *argv[]) {
-       if(argc != 4) {
-               fprintf(stderr, "Usage: %s <multicast address> <port> <ping address>\n", argv[0]);
-               return 1;
-       }
-
-       struct addrinfo hints = {}, *ai = NULL;
-       hints.ai_socktype = SOCK_DGRAM;
-       hints.ai_flags = AI_ADDRCONFIG;
-
-       errno = ENOENT;
-       if(getaddrinfo(argv[1], argv[2], &hints, &ai) || !ai) {
-               fprintf(stderr, "Could not resolve %s port %s: %s\n", argv[1], argv[2], strerror(errno));
-               return 1;
-       }
-
-       int fd;
-       fd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
-       if(!fd) {
-               fprintf(stderr, "Could not create socket: %s\n", strerror(errno));
-               return 1;
-       }
-
-       static const int one = 1;
-       setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof one);
-
-       if(bind(fd, ai->ai_addr, ai->ai_addrlen)) {
-               fprintf(stderr, "Could not bind socket: %s\n", strerror(errno));
-               return 1;
-       }
-
-       switch(ai->ai_family) {
-               case AF_INET: {
-                       struct ip_mreq mreq;
-                       struct sockaddr_in in;
-                       memcpy(&in, ai->ai_addr, sizeof in);
-                       mreq.imr_multiaddr.s_addr = in.sin_addr.s_addr;
-                       mreq.imr_interface.s_addr = htonl(INADDR_ANY);
-                       if(setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void *)&mreq, sizeof mreq)) {
-                               fprintf(stderr, "Cannot join multicast group: %s\n", strerror(errno));
-                               return 1;
-                       }
-#ifdef IP_MULTICAST_LOOP
-                       setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, (const void *)&one, sizeof one);
-#endif
-               } break;
-
-#ifdef IPV6_JOIN_GROUP
-               case AF_INET6: {
-                       struct ipv6_mreq mreq;
-                       struct sockaddr_in6 in6;
-                       memcpy(&in6, ai->ai_addr, sizeof in6);
-                       memcpy(&mreq.ipv6mr_multiaddr, &in6.sin6_addr, sizeof mreq.ipv6mr_multiaddr);
-                       mreq.ipv6mr_interface = in6.sin6_scope_id;
-                       if(setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, (void *)&mreq, sizeof mreq)) {
-                               fprintf(stderr, "Cannot join multicast group: %s\n", strerror(errno));
-                               return 1;
-                       }
-#ifdef IPV6_MULTICAST_LOOP
-                       setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, (const void *)&one, sizeof one);
-#endif
-               } break;
-#endif
-
-               default:
-                       fprintf(stderr, "Multicast for address family %hx unsupported\n", ai->ai_family);
-                       return 1;
-       }
-
-       errno = ENOENT;
-       struct addrinfo *ai2 = NULL;
-       if(getaddrinfo(argv[3], NULL, &hints, &ai2) || !ai2) {
-               fprintf(stderr, "Could not resolve %s: %s\n", argv[3], strerror(errno));
-               return 1;
-       }
-
-       while(true) {
-               uint8_t buf[10000];
-               struct sockaddr src;
-               socklen_t srclen;
-               ssize_t len = recvfrom(fd, buf, sizeof buf, 0, &src, &srclen);
-               if(len <= 0)
-                       break;
-
-               // Ignore short packets.
-               if(len < 14)
-                       continue;
-
-               uint16_t type = buf[12] << 8 | buf[13];
-
-               if(ai2->ai_family == AF_INET && type == ETH_P_IP)
-                       len = do_ipv4(buf, len, (struct sockaddr_in *)ai2->ai_addr);
-               else if(ai2->ai_family == AF_INET && type == ETH_P_ARP)
-                       len = do_arp(buf, len, (struct sockaddr_in *)ai2->ai_addr);
-               else if(ai2->ai_family == AF_INET6 && type == ETH_P_IPV6)
-                       len = do_ipv6(buf, len, (struct sockaddr_in6 *)ai2->ai_addr);
-               else
-                       continue;
-
-               if(len > 0)
-                       sendto(fd, buf, len, 0, ai->ai_addr, ai->ai_addrlen);
-       }
-
-       return 0;
-}
diff --git a/test/sptps-basic.test b/test/sptps-basic.test
deleted file mode 100755 (executable)
index 644a31e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Generate keys
-
-mkdir -p $d1
-
-$sptps_keypair $d1/server.priv $d1/server.pub
-$sptps_keypair $d1/client.priv $d1/client.pub
-
-# Test transfer of a simple file.
-
-(sleep 1; $sptps_test -q $d1/client.priv $d1/server.pub localhost 32750 <../README) &
-$sptps_test $d1/server.priv $d1/client.pub 32750 >$d1/out1
-cmp $d1/out1 ../README
-
-$sptps_test -q $d1/server.priv $d1/client.pub 32750 <../NEWS &
-sleep 1
-$sptps_test $d1/client.priv $d1/server.pub localhost 32750 > $d1/out2
-cmp $d1/out2 ../NEWS
-
-# Datagram mode
-
-$sptps_test -dq $d1/server.priv $d1/client.pub 32750 <../COPYING &
-sleep 1
-sleep 1 | $sptps_test -dq $d1/client.priv $d1/server.pub localhost 32750 >$d1/out3
-cmp $d1/out3 ../COPYING
diff --git a/test/testlib.sh b/test/testlib.sh
deleted file mode 100644 (file)
index 3103335..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-
-# Paths to executables
-
-tincd=../src/tincd
-tinc=../src/tinc
-sptps_test=../src/sptps_test
-sptps_keypair=../src/sptps_keypair
-
-# Test directories
-
-case "$_" in
-       /*)
-               d1=$_.1
-               d2=$_.2
-               d3=$_.3
-       ;;
-       *)
-               d1=$PWD/$_.1
-               d2=$PWD/$_.2
-               d3=$PWD/$_.3
-       ;;
-esac
-
-# Default arguments for both tinc and tincd
-
-c1="--config=$d1 --pidfile=$d1/pid"
-c2="--config=$d2 --pidfile=$d2/pid"
-c3="--config=$d3 --pidfile=$d3/pid"
-
-# Arguments when running tincd
-
-r1="--logfile=$d1/log -d5"
-r2="--logfile=$d2/log -d5"
-r3="--logfile=$d3/log -d5"
-
-# Check for leftover tinc daemons
-
-[ -f $d1/pid ] && $tinc $c1 stop
-[ -f $d2/pid ] && $tinc $c2 stop
-[ -f $d3/pid ] && $tinc $c3 stop
-
-# Remove test directories
-
-rm -rf $d1 $d2 $d3
-
-# Exit on errors, log all commands being executed
-
-set -ex
diff --git a/test/variables.test b/test/variables.test
deleted file mode 100755 (executable)
index 4cf9d5e..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/sh
-
-. ./testlib.sh
-
-# Initialize one node
-
-$tinc $c1 init foo
-test "`$tinc $c1 get Name`" = "foo"
-
-# Test case sensitivity
-
-$tinc $c1 set Mode switch
-test "`$tinc $c1 get Mode`" = "switch"
-test "`$tinc $c1 get mode`" = "switch"
-$tinc $c1 set mode router
-test "`$tinc $c1 get Mode`" = "router"
-test "`$tinc $c1 get mode`" = "router"
-$tinc $c1 set Mode Switch
-test "`$tinc $c1 get Mode`" = "Switch"
-
-# Test deletion
-
-$tinc $c1 del Mode hub && exit 1 || true
-$tinc $c1 del Mode switch
-test -z "`$tinc $c1 get Mode`"
-
-# There can only be one Mode variable
-
-$tinc $c1 add Mode switch
-$tinc $c1 add Mode hub
-test "`$tinc $c1 get Mode`" = "hub"
-
-# Test addition/deletion of multivalued variables
-
-$tinc $c1 add Subnet 1
-$tinc $c1 add Subnet 2
-$tinc $c1 add Subnet 2
-$tinc $c1 add Subnet 3
-test "`$tinc $c1 get Subnet`" = "1
-2
-2
-3"
-$tinc $c1 del Subnet 2
-test "`$tinc $c1 get Subnet`" = "1
-3"
-$tinc $c1 del Subnet
-test -z "`$tinc $c1 get Subnet`"
-
-# We should not be able to get/set server variables using node.variable syntax
-
-test -z "`$tinc $c1 get foo.Name`"
-$tinc $c1 set foo.Name bar && exit 1 || true
-
-# Test getting/setting host variables for other nodes
-
-touch $d1/hosts/bar
-
-$tinc $c1 add bar.PMTU 1
-$tinc $c1 add bar.PMTU 2
-test "`$tinc $c1 get bar.PMTU`" = "2"
-
-$tinc $c1 add bar.Subnet 1
-$tinc $c1 add bar.Subnet 2
-$tinc $c1 add bar.Subnet 2
-$tinc $c1 add bar.Subnet 3
-test "`$tinc $c1 get bar.Subnet`" = "1
-2
-2
-3"
-$tinc $c1 del bar.Subnet 2
-test "`$tinc $c1 get bar.Subnet`" = "1
-3"
-$tinc $c1 del bar.Subnet
-test -z "`$tinc $c1 get bar.Subnet`"
-
-# We should not be able to get/set for nodes with invalid names
-
-touch $d1/hosts/qu-ux
-
-$tinc $c1 set qu-ux.Subnet 1 && exit 1 || true
-
-# We should not be able to set obsolete variables unless forced
-
-$tinc $c1 set PrivateKey 12345 && exit 1 || true
-$tinc $c1 --force set PrivateKey 12345
-test "`$tinc $c1 get PrivateKey`" = "12345"
-$tinc $c1 del PrivateKey
-test -z "`$tinc $c1 get PrivateKey`"