test_device_cgroup_rules.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import pytest
  2. from render import Render
  3. @pytest.fixture
  4. def mock_values():
  5. return {
  6. "images": {
  7. "test_image": {
  8. "repository": "nginx",
  9. "tag": "latest",
  10. }
  11. },
  12. }
  13. def test_device_cgroup_rule(mock_values):
  14. render = Render(mock_values)
  15. c1 = render.add_container("test_container", "test_image")
  16. c1.healthcheck.disable()
  17. c1.add_device_cgroup_rule("c 13:* rwm")
  18. c1.add_device_cgroup_rule("b 10:20 rwm")
  19. output = render.render()
  20. assert output["services"]["test_container"]["device_cgroup_rules"] == [
  21. "b 10:20 rwm",
  22. "c 13:* rwm",
  23. ]
  24. def test_device_cgroup_rule_duplicate(mock_values):
  25. render = Render(mock_values)
  26. c1 = render.add_container("test_container", "test_image")
  27. c1.healthcheck.disable()
  28. c1.add_device_cgroup_rule("c 13:* rwm")
  29. with pytest.raises(Exception):
  30. c1.add_device_cgroup_rule("c 13:* rwm")
  31. def test_device_cgroup_rule_duplicate_group(mock_values):
  32. render = Render(mock_values)
  33. c1 = render.add_container("test_container", "test_image")
  34. c1.healthcheck.disable()
  35. c1.add_device_cgroup_rule("c 13:* rwm")
  36. with pytest.raises(Exception):
  37. c1.add_device_cgroup_rule("c 13:* rm")
  38. def test_device_cgroup_rule_invalid_device(mock_values):
  39. render = Render(mock_values)
  40. c1 = render.add_container("test_container", "test_image")
  41. c1.healthcheck.disable()
  42. with pytest.raises(Exception):
  43. c1.add_device_cgroup_rule("d 10:20 rwm")
  44. def test_device_cgroup_rule_invalid_perm(mock_values):
  45. render = Render(mock_values)
  46. c1 = render.add_container("test_container", "test_image")
  47. c1.healthcheck.disable()
  48. with pytest.raises(Exception):
  49. c1.add_device_cgroup_rule("a 10:20 rwd")
  50. def test_device_cgroup_rule_invalid_format(mock_values):
  51. render = Render(mock_values)
  52. c1 = render.add_container("test_container", "test_image")
  53. c1.healthcheck.disable()
  54. with pytest.raises(Exception):
  55. c1.add_device_cgroup_rule("a 10 20 rwd")
  56. def test_device_cgroup_rule_invalid_format_missing_major(mock_values):
  57. render = Render(mock_values)
  58. c1 = render.add_container("test_container", "test_image")
  59. c1.healthcheck.disable()
  60. with pytest.raises(Exception):
  61. c1.add_device_cgroup_rule("a 10 rwd")