Change:
<!-- Please only use this template for submitting reports about failing tests in Kubernetes CI jobs --Which jobs are failing: kubernetes/node-problem-detector/node-problem-detector-ci: ci-npd-e2e-node See the Which test(s) are failing: [] NodeProblemDetector [NodeFeature:NodeProblemDetector] [] SystemLogMonitor should generate node condition and events for corresponding errors Since when has it been failing: Dec 03. was at 19:50 PST, was at 21:51 PST. Testgrid link: https://k8s- Reason for failure: Apparently is the culprit. Anything else we need to know: This is likely caused by some library upgrade. Nothing big.
/sig node
/assign
Seems like the failure is caused by . /cc /cc /cc /cc
/priority critical-urgent
The particular bug I care about has been fixed in . I'm gonna still work on submitting , as the same error should also be affecting a few other tests.

Discussion:
c = f.ClientSet ns = f.Namespace.Name systemPods, err := e2epod.GetPodsInNamespace(c, ns, map[string]string{}) <del> framework.ExpectEqual(err, nil) </del> <ins> framework.ExpectNoError(err) </ins> systemPodsNo = int32(len(systemPods)) if strings.Index(framework.TestContext.CloudConfig.NodeInstanceGroup, ",") >= 0 { framework.Failf("Test dose not support cluster setup with more than one MIG: %s", framework.TestContext.CloudConfig.NodeInstanceGroup)

// the cluster is restored to health. ginkgo.By("waiting for system pods to successfully restart") err := e2epod.WaitForPodsRunningReady(c, metav1.NamespaceSystem, systemPodsNo, 0, framework.PodReadyBeforeTimeout, map[string]string{}) <del> framework.ExpectEqual(err, nil) </del> <ins> framework.ExpectNoError(err) </ins> }) ginkgo.It("node lease should be deleted when corresponding node is deleted", func() { leaseClient := c.CoordinationV1().Leases(v1.NamespaceNodeLease) err := e2enode.WaitForReadyNodes(c, framework.TestContext.CloudConfig.NumNodes, 10*time.Minute) <del> framework.ExpectEqual(err, nil) </del> <ins> framework.ExpectNoError(err) </ins> ginkgo.By("verify node lease exists for every nodes") originalNodes, err := e2enode.GetReadySchedulableNodes(c)

targetNumNodes := int32(framework.TestContext.CloudConfig.NumNodes - 1) ginkgo.By(fmt.Sprintf("decreasing cluster size to %d", targetNumNodes)) err = framework.ResizeGroup(group, targetNumNodes) <del> framework.ExpectEqual(err, nil) </del> <ins> framework.ExpectNoError(err) </ins> err = framework.WaitForGroupSize(group, targetNumNodes) <del> framework.ExpectEqual(err, nil) </del> <ins> framework.ExpectNoError(err) </ins> err = e2enode.WaitForReadyNodes(c, framework.TestContext.CloudConfig.NumNodes-1, 10*time.Minute) <del> framework.ExpectEqual(err, nil) </del> <ins> framework.ExpectNoError(err) </ins> targetNodes, err := e2enode.GetReadySchedulableNodes(c) framework.ExpectNoError(err) framework.ExpectEqual(len(targetNodes.Items), int(targetNumNodes))

} newNodes, err := e2enode.CheckReady(c, len(origNodes.Items)-1, 5*time.Minute) <del> framework.ExpectEqual(err, nil) </del> <ins> framework.ExpectNoError(err) </ins> framework.ExpectEqual(len(newNodes), len(origNodes.Items)-1) _, err = c.CoreV1().Nodes().Get(nodeToDelete.Name, metav1.GetOptions{})

ginkgo.Context("once the node is setup", func() { ginkgo.It("container runtime's oom-score-adj should be -999", func() { runtimePids, err := getPidsForProcess(framework.TestContext.ContainerRuntimeProcessName, framework.TestContext.ContainerRuntimePidFile) <del> gomega.Expect(err).To(gomega.BeNil(), "failed to get list of container runtime pids") </del> <ins> framework.ExpectNoError(err, "failed to get list of container runtime pids") </ins> for _, pid := range runtimePids { gomega.Eventually(func() error { return validateOOMScoreAdjSetting(pid, -999)

}) ginkgo.It("Kubelet's oom-score-adj should be -999", func() { kubeletPids, err := getPidsForProcess(kubeletProcessName, "") <del> gomega.Expect(err).To(gomega.BeNil(), "failed to get list of kubelet pids") </del> <ins> framework.ExpectNoError(err, "failed to get list of kubelet pids") </ins> framework.ExpectEqual(len(kubeletPids), 1, "expected only one kubelet process; found %d", len(kubeletPids)) gomega.Eventually(func() error { return validateOOMScoreAdjSetting(kubeletPids[0], -999)

// created before this test, and may not be infra // containers. They should be excluded from the test. existingPausePIDs, err := getPidsForProcess("pause", "") <del> gomega.Expect(err).To(gomega.BeNil(), "failed to list all pause processes on the node") </del> <ins> framework.ExpectNoError(err, "failed to list all pause processes on the node") </ins> existingPausePIDSet := sets.NewInt(existingPausePIDs...) podClient := f.PodClient()

podResources, err := getNodeDevices() var resourcesForOurPod *kubeletpodresourcesv1alpha1.PodResources framework.Logf("pod resources %v", podResources) <del> gomega.Expect(err).To(gomega.BeNil()) </del> <ins> framework.ExpectNoError(err) </ins> framework.ExpectEqual(len(podResources.PodResources), 2) for _, res := range podResources.GetPodResources() { if res.Name == pod1.Name {

nodeTime = time.Now() bootTime, err = util.GetBootTime() <del> gomega.Expect(err).To(gomega.BeNil()) </del> <ins> framework.ExpectNoError(err) </ins> // Set lookback duration longer than node up time. // Assume the test won't take more than 1 hour, in fact it usually only takes 90 seconds.