Skip to content

Commit c3253c4

Browse files
authored
Merge pull request #1176 from nlabriet/unique_name_per_class
Unique resource name per resource class
2 parents 69fd553 + 1f0c904 commit c3253c4

File tree

4 files changed

+39
-4
lines changed

4 files changed

+39
-4
lines changed

labgrid/remote/client.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -630,17 +630,17 @@ def get_target_resources(self, place):
630630
resources = {}
631631
for resource_path in place.acquired_resources:
632632
match = place.getmatch(resource_path)
633-
(exporter, group_name, _, resource_name) = resource_path
633+
(exporter, group_name, cls, resource_name) = resource_path
634634
name = resource_name
635635
if match.rename:
636636
name = match.rename
637-
resources[name] = self.resources[exporter][group_name][resource_name]
637+
resources[(name, cls)] = self.resources[exporter][group_name][resource_name]
638638
return resources
639639

640640
def get_target_config(self, place):
641641
config = {}
642642
resources = config['resources'] = []
643-
for name, resource in self.get_target_resources(place).items():
643+
for (name, _), resource in self.get_target_resources(place).items():
644644
args = OrderedDict()
645645
if name != resource.cls:
646646
args['name'] = name

labgrid/resource/remote.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def on_resource_added(self, resource):
5050
place = self.session.get_place(remote_place.name) # pylint: disable=no-member
5151
resource_entries = self.session.get_target_resources(place) # pylint: disable=no-member
5252
expanded = []
53-
for resource_name, resource_entry in resource_entries.items():
53+
for (resource_name, _), resource_entry in resource_entries.items():
5454
new = target_factory.make_resource(
5555
remote_place.target, resource_entry.cls, resource_name, resource_entry.args)
5656
new.parent = remote_place

tests/conftest.py

+7
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,13 @@ def exporter(tmpdir, crossbar):
168168
Broken:
169169
RawSerialPort:
170170
port: 'none'
171+
Many:
172+
NetworkSerialPort:
173+
host: 'localhost'
174+
port: 4000
175+
NetworkService:
176+
address: "192.168.0.1"
177+
username: "root"
171178
"""
172179
)
173180
spawn = pexpect.spawn(

tests/test_crossbar.py

+28
Original file line numberDiff line numberDiff line change
@@ -464,3 +464,31 @@ def test_reservation_custom_config(place, exporter, tmpdir):
464464
spawn.expect(pexpect.EOF)
465465
spawn.close()
466466
assert spawn.exitstatus == 0, spawn.before.strip()
467+
468+
def test_same_name_resources(place, exporter, tmpdir):
469+
with pexpect.spawn('python -m labgrid.remote.client -p test add-named-match "testhost/Many/NetworkService" "samename"') as spawn:
470+
spawn.expect(pexpect.EOF)
471+
spawn.close()
472+
assert spawn.exitstatus == 0, spawn.before.strip()
473+
474+
with pexpect.spawn('python -m labgrid.remote.client -p test add-named-match "testhost/Many/NetworkSerialPort" "samename"') as spawn:
475+
spawn.expect(pexpect.EOF)
476+
spawn.close()
477+
assert spawn.exitstatus == 0, spawn.before.strip()
478+
479+
with pexpect.spawn('python -m labgrid.remote.client -p test acquire') as spawn:
480+
spawn.expect(pexpect.EOF)
481+
spawn.close()
482+
assert spawn.exitstatus == 0, spawn.before.strip()
483+
484+
with pexpect.spawn('python -m labgrid.remote.client -p test env') as spawn:
485+
spawn.expect(pexpect.EOF)
486+
spawn.close()
487+
assert spawn.exitstatus == 0, spawn.before.strip()
488+
assert "NetworkService".encode("utf-8") in spawn.before.replace(b'\r\n', b'\n'), spawn.before.strip()
489+
assert "NetworkSerialPort".encode("utf-8") in spawn.before.replace(b'\r\n', b'\n'), spawn.before.strip()
490+
491+
with pexpect.spawn('python -m labgrid.remote.client -p test release') as spawn:
492+
spawn.expect(pexpect.EOF)
493+
spawn.close()
494+
assert spawn.exitstatus == 0, spawn.before.strip()

0 commit comments

Comments
 (0)