def test_epch_unclaimed_channels(channel): """Test unclaimed channels.""" ch_1 = channel(zha_const.CHANNEL_ON_OFF, 6) ch_2 = channel(zha_const.CHANNEL_LEVEL, 8) ch_3 = channel(zha_const.CHANNEL_COLOR, 768) ep_channels = zha_channels.ChannelPool( mock.MagicMock(spec_set=zha_channels.Channels), mock.sentinel.ep) all_channels = {ch_1.id: ch_1, ch_2.id: ch_2, ch_3.id: ch_3} with mock.patch.dict(ep_channels.all_channels, all_channels, clear=True): available = ep_channels.unclaimed_channels() assert ch_1 in available assert ch_2 in available assert ch_3 in available ep_channels.claimed_channels[ch_2.id] = ch_2 available = ep_channels.unclaimed_channels() assert ch_1 in available assert ch_2 not in available assert ch_3 in available ep_channels.claimed_channels[ch_1.id] = ch_1 available = ep_channels.unclaimed_channels() assert ch_1 not in available assert ch_2 not in available assert ch_3 in available ep_channels.claimed_channels[ch_3.id] = ch_3 available = ep_channels.unclaimed_channels() assert ch_1 not in available assert ch_2 not in available assert ch_3 not in available
def test_epch_claim_channels(channel): """Test channel claiming.""" ch_1 = channel(zha_const.CHANNEL_ON_OFF, 6) ch_2 = channel(zha_const.CHANNEL_LEVEL, 8) ch_3 = channel(zha_const.CHANNEL_COLOR, 768) ep_channels = zha_channels.ChannelPool( mock.MagicMock(spec_set=zha_channels.Channels), mock.sentinel.ep) all_channels = {ch_1.id: ch_1, ch_2.id: ch_2, ch_3.id: ch_3} with mock.patch.dict(ep_channels.all_channels, all_channels, clear=True): assert ch_1.id not in ep_channels.claimed_channels assert ch_2.id not in ep_channels.claimed_channels assert ch_3.id not in ep_channels.claimed_channels ep_channels.claim_channels([ch_2]) assert ch_1.id not in ep_channels.claimed_channels assert ch_2.id in ep_channels.claimed_channels assert ep_channels.claimed_channels[ch_2.id] is ch_2 assert ch_3.id not in ep_channels.claimed_channels ep_channels.claim_channels([ch_3, ch_1]) assert ch_1.id in ep_channels.claimed_channels assert ep_channels.claimed_channels[ch_1.id] is ch_1 assert ch_2.id in ep_channels.claimed_channels assert ep_channels.claimed_channels[ch_2.id] is ch_2 assert ch_3.id in ep_channels.claimed_channels assert ep_channels.claimed_channels[ch_3.id] is ch_3 assert "1:0x0300" in ep_channels.claimed_channels
async def test_ep_channels_configure(channel): """Test unclaimed channels.""" ch_1 = channel(zha_const.CHANNEL_ON_OFF, 6) ch_2 = channel(zha_const.CHANNEL_LEVEL, 8) ch_3 = channel(zha_const.CHANNEL_COLOR, 768) ch_3.async_configure = asynctest.CoroutineMock(side_effect=asyncio.TimeoutError) ch_3.async_initialize = asynctest.CoroutineMock(side_effect=asyncio.TimeoutError) ch_4 = channel(zha_const.CHANNEL_ON_OFF, 6) ch_5 = channel(zha_const.CHANNEL_LEVEL, 8) ch_5.async_configure = asynctest.CoroutineMock(side_effect=asyncio.TimeoutError) ch_5.async_initialize = asynctest.CoroutineMock(side_effect=asyncio.TimeoutError) channels = mock.MagicMock(spec_set=zha_channels.Channels) type(channels).semaphore = mock.PropertyMock(return_value=asyncio.Semaphore(3)) ep_channels = zha_channels.ChannelPool(channels, mock.sentinel.ep) claimed = {ch_1.id: ch_1, ch_2.id: ch_2, ch_3.id: ch_3} client_chans = {ch_4.id: ch_4, ch_5.id: ch_5} with mock.patch.dict(ep_channels.claimed_channels, claimed, clear=True): with mock.patch.dict(ep_channels.client_channels, client_chans, clear=True): await ep_channels.async_configure() await ep_channels.async_initialize(mock.sentinel.from_cache) for ch in [*claimed.values(), *client_chans.values()]: assert ch.async_initialize.call_count == 1 assert ch.async_initialize.await_count == 1 assert ch.async_initialize.call_args[0][0] is mock.sentinel.from_cache assert ch.async_configure.call_count == 1 assert ch.async_configure.await_count == 1 assert ch_3.warning.call_count == 2 assert ch_5.warning.call_count == 2