/tests/roundwared/test_stream.py

https://github.com/13rac1/roundware-server · Python · 125 lines · 102 code · 16 blank · 7 comment · 0 complexity · 1a7cb0844df20d9a3893c65a5de49aed MD5 · raw file

  1. # Roundware Server is released under the GNU Affero General Public License v3.
  2. # See COPYRIGHT.txt, AUTHORS.txt, and LICENSE.txt in the project root directory.
  3. from __future__ import unicode_literals
  4. from model_mommy import mommy
  5. from .common import RoundwaredTestCase
  6. from roundware.rw.models import (UIGroup, Session, Tag, Asset, TagCategory,
  7. UIItem, Project, LocalizedString, Audiotrack)
  8. from roundwared.stream import RoundStream
  9. class TestRoundStream(RoundwaredTestCase):
  10. """ Exercise methods and instances of RoundStream
  11. """
  12. def setUp(self):
  13. super(type(self), TestRoundStream).setUp(self)
  14. self.project1 = mommy.make(Project, name='Project One',
  15. ordering='random', recording_radius=16)
  16. self.session1 = mommy.make(Session, project=self.project1,
  17. language=self.english)
  18. self.req1 = {"session_id": self.session1.id,
  19. "project_id": self.project1.id,
  20. "latitude":1.0,
  21. "longitude":1.0}
  22. self.asset1 = mommy.make(Asset, project=self.project1,
  23. language=self.english,
  24. tags=[self.tag1],
  25. audiolength=2000)
  26. self.asset2 = mommy.make(Asset, project=self.project1,
  27. language=self.english,
  28. tags=[self.tag1],
  29. audiolength=2000)
  30. self.audiotrack = mommy.make(Audiotrack, project=self.project1,
  31. minvolume=1.0,
  32. maxvolume=1.0,
  33. minduration=10000000000.0,
  34. maxduration=30000000000.0,
  35. mindeadair=1000000000.0,
  36. maxdeadair=3000000000.0,
  37. minfadeintime=100000000.0,
  38. maxfadeintime=500000000.0,
  39. minfadeouttime=100000000.0,
  40. maxfadeouttime=2000000000.0,
  41. minpanpos=0.0,
  42. maxpanpos=0.0,
  43. minpanduration=5000000000.0,
  44. maxpanduration=10000000000.0)
  45. def test_new_stream_has_recording_collection(self):
  46. """ Instantiate a new RoundStream. Should have a RecordingCollection
  47. """
  48. req = self.req1
  49. req["audio_stream_bitrate"] = '128'
  50. stream = RoundStream(self.session1.id, 'ogg', req)
  51. self.assertEquals(stream.recordingCollection.__class__.__name__,
  52. 'RecordingCollection')
  53. def test_new_stream_has_correct_radius_from_project(self):
  54. req = self.req1
  55. req["audio_stream_bitrate"] = '128'
  56. stream = RoundStream(self.session1.id, 'ogg', req)
  57. self.assertEquals(16, stream.radius)
  58. def test_modify_stream(self):
  59. req = self.req1
  60. req["audio_stream_bitrate"] = '128'
  61. stream = RoundStream(self.session1.id, 'ogg', req)
  62. req["latitude"] = 1
  63. req["longitude"] = 1
  64. stream.modify_stream(req)
  65. def test_new_stream_ordering_from_project(self):
  66. req = self.req1
  67. req["audio_stream_bitrate"] = '128'
  68. stream = RoundStream(self.session1.id, 'ogg', req)
  69. self.assertEquals('random', stream.ordering)
  70. def test_main_loop(self):
  71. """ make sure we get a gObject MainLoop """
  72. req = self.req1
  73. req["audio_stream_bitrate"] = '128'
  74. stream = RoundStream(self.session1.id, 'ogg', req)
  75. self.assertEquals(stream.main_loop.__class__.__name__, 'MainLoop')
  76. def test_icecast_admin_instantiated(self):
  77. req = self.req1
  78. req["audio_stream_bitrate"] = '128'
  79. stream = RoundStream(self.session1.id, 'ogg', req)
  80. admin = stream.icecast_admin
  81. self.assertEquals(admin.__class__.__name__, 'Admin')
  82. def test_stream_get_state(self):
  83. req = self.req1
  84. req["audio_stream_bitrate"] = '128'
  85. stream = RoundStream(self.session1.id, 'ogg', req)
  86. self.assertEqual(stream.get_state(), 0)
  87. stream.resume()
  88. self.assertEqual(stream.get_state(), 1)
  89. def test_pause_stream(self):
  90. req = self.req1
  91. req["audio_stream_bitrate"] = '128'
  92. stream = RoundStream(self.session1.id, 'ogg', req)
  93. stream.pause()
  94. self.assertTrue(stream.is_paused())
  95. def test_resume_stream(self):
  96. req = self.req1
  97. req["audio_stream_bitrate"] = '128'
  98. stream = RoundStream(self.session1.id, 'ogg', req)
  99. stream.resume()
  100. self.assertFalse(stream.is_paused())
  101. def test_add_audiotrack(self):
  102. req = self.req1
  103. req["audio_stream_bitrate"] = '128'
  104. stream = RoundStream(self.session1.id, 'ogg', req)
  105. stream.pipeline = {}
  106. stream.adder = {}
  107. self.assertEqual(len(stream.audiotracks), 0)
  108. stream.add_audiotracks()
  109. self.assertEqual(len(stream.audiotracks), 1)