76 Commits

Author SHA1 Message Date
Avinash Sridharan
1ce5e54e99 pkg/ns: fixed the check for network namespace path.
The expectation on older kernels (< 3.19) was to have the network
namespace always be a directory. This is not true if the network
namespace is bind mounted to a file, and will make the plugin fail
erroneously in such cases. The fix is to remove this assumption
completely and just do a basic check on the file system types being
returned.

Fixes #288
2016-08-31 21:41:00 +00:00
Stefan Junker
3a4124d257 pkg/ns: introduce error types indicate NS verification 2016-05-27 13:50:16 +02:00
Stefan Junker
cfedcfd8f2 skel/test: add case for empty NETNS 2016-05-27 12:26:42 +02:00
Stefan Junker
5fe036b88a plugins: don't require CNI_NETNS for DEL command
This will allow to free up the IPAM allocations when the caller doesn't
have access to the network namespace anymore, e.g. due to a reboot.
2016-05-27 10:57:39 +02:00
Stefan Junker
d7de8d4f98 pkg/skel: allow arg requriements specified by CMD 2016-05-27 10:56:24 +02:00
Stefan Junker
2d47b0396d pkg/ns: consider PROCFS during NS verification
This is an attempt to bring compatibility with Kernel <3.19, where NSFS
where PROCFS was used for network namespaces.
2016-05-26 12:42:50 +02:00
Stefan Junker
ea073fc4c7 pkg/ns: test IsNSFS() 2016-05-24 22:30:49 +02:00
Stefan Junker
f64cfb84f8 pkg/ns: test case for rejecting a non-ns nspath 2016-05-24 22:30:49 +02:00
Stefan Junker
39eace3c38 pkg/ns: verify netns when initialized with GetNS 2016-05-24 22:30:49 +02:00
Stefan Junker
a8d1029294 pkg/ns: add tests cases for Close()'d NS 2016-05-24 21:15:51 +02:00
Stefan Junker
40440ec887 pkg/ns: don't allow operations after Close() 2016-05-24 20:52:00 +02:00
Dan Williams
fce81fbf78 testutils: add e2e testing helper code 2016-05-20 17:10:25 -05:00
Dan Williams
f2922c5c1f ns: add interface, use it, and fix thread-related namespace switch issues
Add a namespace object interface for somewhat cleaner code when
creating and switching between network namespaces.  All created
namespaces are now mounted in /var/run/netns to ensure they
have persistent inodes and paths that can be passed around
between plugin components without relying on the current namespace
being correct.

Also remove the thread-locking arguments from the ns package
per https://github.com/appc/cni/issues/183 by doing all the namespace
changes in a separate goroutine that locks/unlocks itself, instead of
the caller having to track OS thread locking.
2016-05-20 17:10:25 -05:00
Stefan Junker
c019ed25d2 Merge pull request #199 from dcbw/fix-bridge-tx-queue-length
bridge: leave TX queue length as kernel default, not 0
2016-05-19 23:05:08 +02:00
Michael Bridgen
3738692372 Merge pull request #200 from squaremo/simplify-readme
Simplify README preamble
2016-05-19 13:21:40 +01:00
Angus Lees
734bf1ba5b pkg/ns: evaluate syscall number at compile-time
Previously this code used a run-time map lookup keyed by
runtime.GOOS/GOARCH.  This version uses conditional compilation to make
this choice at compile time, giving immediate feedback for unsupported
platforms.
2016-05-19 12:06:37 +02:00
Angus Lees
5978cf8b88 pkg/ns: use correct syscall number on arm 2016-05-19 12:06:37 +02:00
Stefan Junker
fc229c5090 *: appc/cni -> containernetworking/cni
The project has been moved so internally we simply rename everything.
Consumers are recommended to update their vendored version of cni.
2016-05-19 12:06:36 +02:00
Piotr Skamruk
5cbd217cbe pkg/utils: add functions to work with sysctl 2016-05-19 12:06:16 +02:00
Gabe Rosenhouse
19850efc3a Document use of goroutine and lockosthread in test helpers 2016-05-19 12:06:16 +02:00
Dan Williams
5158edacef ns: fix reading net namespace in multi-threaded processes
/proc/self/ns/net gives the main thread's namespace, not necessarily
the namespace of the thread that's running the testcases.  This causes
sporadic failures of the tests.

For example, with a testcase reading inodes after switching netns:

/proc/27686/task/27689/ns/net 4026532565
/proc/self/ns/net 4026531969
/proc/27686/task/27689/ns/net 4026532565

See also:
008d17ae00

Running Suite: pkg/ns Suite
===========================
Random Seed: 1459953577
Will run 6 of 6 specs

• Failure [0.028 seconds]
Linux namespace operations
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:167
  WithNetNS
  /cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:166
    executes the callback within the target network namespace [It]
    /cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:97

    Expected
        <uint64>: 4026531969
    to equal
        <uint64>: 4026532565

    /cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:96
------------------------------
•••••

Summarizing 1 Failure:

[Fail] Linux namespace operations WithNetNS [It] executes the callback within the target network namespace
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:96

Ran 6 of 6 Specs in 0.564 seconds
FAIL! -- 5 Passed | 1 Failed | 0 Pending | 0 Skipped --- FAIL: TestNs (0.56s)
FAIL
2016-05-19 12:06:16 +02:00
Gabe Rosenhouse
5260862f80 Fix issues with MakeNetworkNS test helper 2016-05-19 12:06:16 +02:00
Gabe Rosenhouse
c77f7431fb Add basic unit tests of testhelpers 2016-05-19 12:06:16 +02:00
Gabe Rosenhouse
bd7b83dd98 Extract inode inspection functions into testhelpers 2016-05-19 12:06:16 +02:00
Gabe Rosenhouse
3358f16dd6 Extract testhelpers from loopback test suite 2016-05-19 12:06:16 +02:00
Stefan Junker
9079565e0d *: appc/cni -> containernetworking/cni
The project has been moved so internally we simply rename everything.
Consumers are recommended to update their vendored version of cni.
2016-05-06 16:40:27 +02:00
Stefan Junker
c3a90e7682 Merge pull request #187 from appc/v0.3.0
merge unneeded branch v0.3.0 into master
2016-04-22 19:25:54 +02:00
Zach Gershman
f73261c431 Merge pull request #182 from rosenhouse/document-lockosthread
Document use of goroutine and LockOSThread in test helpers
2016-04-18 10:45:46 -07:00
Dan Williams
c272c49555 ns: fix reading net namespace in multi-threaded processes
/proc/self/ns/net gives the main thread's namespace, not necessarily
the namespace of the thread that's running the testcases.  This causes
sporadic failures of the tests.

For example, with a testcase reading inodes after switching netns:

/proc/27686/task/27689/ns/net 4026532565
/proc/self/ns/net 4026531969
/proc/27686/task/27689/ns/net 4026532565

See also:
008d17ae00

Running Suite: pkg/ns Suite
===========================
Random Seed: 1459953577
Will run 6 of 6 specs

• Failure [0.028 seconds]
Linux namespace operations
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:167
  WithNetNS
  /cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:166
    executes the callback within the target network namespace [It]
    /cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:97

    Expected
        <uint64>: 4026531969
    to equal
        <uint64>: 4026532565

    /cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:96
------------------------------
•••••

Summarizing 1 Failure:

[Fail] Linux namespace operations WithNetNS [It] executes the callback within the target network namespace
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:96

Ran 6 of 6 Specs in 0.564 seconds
FAIL! -- 5 Passed | 1 Failed | 0 Pending | 0 Skipped --- FAIL: TestNs (0.56s)
FAIL
2016-04-18 10:35:23 -05:00
Gabe Rosenhouse
d701ca6c82 Document use of goroutine and lockosthread in test helpers 2016-04-17 20:27:02 -07:00
Gabe Rosenhouse
c085ec98fd Fix issues with MakeNetworkNS test helper 2016-04-17 19:47:54 -07:00
Gabe Rosenhouse
82851a860e Add basic unit tests of testhelpers 2016-04-17 19:25:39 -07:00
Gabe Rosenhouse
5f757b6af7 Extract inode inspection functions into testhelpers 2016-04-17 18:35:49 -07:00
Gabe Rosenhouse
4a79ac4cda Extract testhelpers from loopback test suite 2016-04-17 18:28:10 -07:00
Piotr Skamruk
e1bc41a42a pkg/utils: add functions to work with sysctl 2016-04-07 21:40:51 +02:00
Jonathan Boulle
11c0bfada8 *: add missing license headers + check 2016-04-01 15:35:21 +02:00
Stefan Junker
2c1633f8e9 pkg/utils: correct the test's expected chain names 2016-03-31 18:01:32 +02:00
Stefan Junker
6c9b5a361a *: add comment to iptables rules for ipmasq 2016-03-31 18:01:32 +02:00
Stefan Junker
42b74b9eb5 pkg/utils: remove unneeded condition in tests 2016-03-31 18:01:32 +02:00
Stefan Junker
9612d36615 pkg/utils: fix docstring 2016-03-31 18:01:32 +02:00
Stefan Junker
d4e088aad4 pkg/utils: split and unexport constants 2016-03-31 18:01:32 +02:00
Stefan Junker
f429750105 pkg/utils: fix docstring 2016-03-31 18:01:32 +02:00
Stefan Junker
f96a716154 pkg/utils: use constant for chain prefix 2016-03-31 18:01:32 +02:00
Stefan Junker
b4a2a1fa51 pkg/utils: use name+id for hash and extend tests 2016-03-31 18:01:32 +02:00
Abhishek Chanda
b87cf1ba9c pkg: add a function to generate chain names
Adds a function to generate chain names for use in iptables and
ports all drivers to use that function. Also adds tests for the
said function.
2016-03-31 18:01:32 +02:00
Stefan Junker
dc44feb5b5 pkg/types: add tests for args 2016-03-21 20:40:39 +01:00
Stefan Junker
fc83c24eb5 pkg/types: add IgnoreUnknown arg and logic
This commit adds a struct type CommonArgs that is to be embedded in
every plugin's argument struct. It contains a field named
"IgnoreUnknown" which will be parsed as a boolean and can be provided to
ignore unknown arguments passed to the plugin.
2016-03-21 20:36:05 +01:00
Stefan Junker
8cc424c5aa pkg/skel: add rudimentary unit tests
This is an attempt to testing the PluginMain() function of the skel pkg.
We should be able to do better by using a mockable interface for the
plugins, but this is a start.
2016-03-18 22:34:29 +01:00
Gabe Rosenhouse
ca978caee7 Update docstring on WithNetNS 2016-03-15 08:37:00 -07:00
Gabe Rosenhouse
b99854d124 WithNetNS restores original namespace when callback errors
- adds test coverage of WithNetNS in BDD-style
2016-03-15 01:51:58 -07:00