Skip to content

Commit 6bb6ce8

Browse files
authored
Merge pull request #2097 from marquiz/devel/nfg-e2e
Revert "nfd-master: use only unbuffered chans in the nfd api-controller"
2 parents af374df + 8affb9d commit 6bb6ce8

File tree

4 files changed

+87
-2
lines changed

4 files changed

+87
-2
lines changed

pkg/nfd-master/nfd-api-controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ func init() {
6666
func newNfdController(config *restclient.Config, nfdApiControllerOptions nfdApiControllerOptions) (*nfdController, error) {
6767
c := &nfdController{
6868
stopChan: make(chan struct{}),
69-
updateAllNodesChan: make(chan struct{}),
69+
updateAllNodesChan: make(chan struct{}, 1),
7070
updateOneNodeChan: make(chan string),
71-
updateAllNodeFeatureGroupsChan: make(chan struct{}),
71+
updateAllNodeFeatureGroupsChan: make(chan struct{}, 1),
7272
updateNodeFeatureGroupChan: make(chan string),
7373
}
7474

test/e2e/data/nodefeature-1.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ spec:
2121
fake.instance:
2222
elements:
2323
- attributes:
24+
name: "instance-x"
2425
attr_1: "true"
2526
attr_2: "9"
2627
# Labels to be created

test/e2e/data/nodefeaturegroup-2.yaml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
apiVersion: nfd.k8s-sigs.io/v1alpha1
2+
kind: NodeFeatureGroup
3+
metadata:
4+
name: e2e-test-2
5+
spec:
6+
featureGroupRules:
7+
- name: "e2e-matchany-test-1"
8+
vars:
9+
e2e-matchany-test-1: "true"
10+
matchAny:
11+
- matchFeatures:
12+
- feature: "fake.instance"
13+
matchExpressions:
14+
"attr_1": {op: In, value: ["nomatch"]}
15+
- matchFeatures:
16+
- feature: "fake.instance"
17+
matchExpressions:
18+
"attr_3": {op: In, value: ["100"]}
19+
20+
#
21+
# Test templating
22+
#
23+
- name: "e2e-template-test-1"
24+
varsTemplate: |
25+
{{ range .fake.instance }}e2e-template-test-1-{{ .name }}=found
26+
{{ end }}
27+
matchFeatures:
28+
- feature: "fake.instance"
29+
matchExpressions:
30+
"attr_1": {op: In, value: ["true"]}
31+
32+
- name: "e2e-template-test-2"
33+
varsTemplate: |
34+
{{ range .fake.attribute }}e2e-template-test-2-{{ .Name }}={{ .Value }}
35+
{{ end }}
36+
matchFeatures:
37+
- feature: "fake.attribute"
38+
matchExpressions:
39+
# expect attr_2 overridden from nodefeature-1.yaml
40+
"attr_2": {op: IsTrue}
41+
matchName: {op: In, value: ["attr_3"]}
42+
43+
#
44+
# Test backreference
45+
#
46+
- name: "e2e-backreference-test-1"
47+
matchFeatures:
48+
- feature: "rule.matched"
49+
matchExpressions:
50+
"e2e-matchany-test-1:": {op: IsTrue}
51+
"e2e-template-test-1-instance_1": {op: In, value: ["found"]}
52+
"e2e-template-test-1-instance_2": {op: Exists}
53+
"e2e-template-test-2-attr_2": {op: IsTrue}
54+
"e2e-template-test-2-attr_3": {op: In, value: ["10"]}

test/e2e/node_feature_discovery_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,36 @@ core:
887887
}
888888
return reflect.DeepEqual(group.Status, expectedGroup.Status)
889889
}, 5*time.Minute, 5*time.Second).Should(BeTrue())
890+
891+
// Deploy node feature object to have one different node
892+
targetNodeName := nodes[0].Name
893+
By("Creating NodeFeature object")
894+
nodeFeatures, err := testutils.CreateOrUpdateNodeFeaturesFromFile(ctx, nfdClient, "nodefeature-1.yaml", f.Namespace.Name, targetNodeName)
895+
Expect(err).NotTo(HaveOccurred())
896+
897+
By("Creating NodeFeatureGroups #2")
898+
Expect(testutils.CreateNodeFeatureGroupsFromFile(ctx, nfdClient, f.Namespace.Name, "nodefeaturegroup-2.yaml")).NotTo(HaveOccurred())
899+
900+
By("Verifying NodeFeatureGroups #2")
901+
Eventually(func() bool {
902+
group, err := nfdClient.NfdV1alpha1().NodeFeatureGroups(f.Namespace.Name).Get(ctx, "e2e-test-2", metav1.GetOptions{})
903+
if err != nil {
904+
return false
905+
}
906+
return len(group.Status.Nodes) == 1 && group.Status.Nodes[0].Name == targetNodeName
907+
}, 1*time.Minute, 5*time.Second).Should(BeTrue())
908+
909+
By("Deleting NodeFeature object")
910+
err = nfdClient.NfdV1alpha1().NodeFeatures(f.Namespace.Name).Delete(ctx, nodeFeatures[0], metav1.DeleteOptions{})
911+
Expect(err).NotTo(HaveOccurred())
912+
913+
Eventually(func() bool {
914+
group, err := nfdClient.NfdV1alpha1().NodeFeatureGroups(f.Namespace.Name).Get(ctx, "e2e-test-2", metav1.GetOptions{})
915+
if err != nil {
916+
return false
917+
}
918+
return len(group.Status.Nodes) == 0
919+
}, 1*time.Minute, 5*time.Second).Should(BeTrue())
890920
})
891921
})
892922

0 commit comments

Comments
 (0)