diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2022-03-22 17:52:55 +0000 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2022-04-21 15:00:29 +0000 |
commit | f850a9f9e67c4ec73515748b95f17efaa3e39da2 (patch) | |
tree | 5f3498ff2c1d1e9ec1247f1a8c5d8a253c538a53 | |
parent | 4ae177d49c48fb941656fded4bb036f0754cf6fc (diff) | |
download | libvirt-python-f850a9f9e67c4ec73515748b95f17efaa3e39da2.tar.gz |
sanitytest: move initial class method mapping into a helper method
This is a step towards turning the sanitytest.py file into a normal
python unittest.
Best viewed with the '-b' flag to diff.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
-rw-r--r-- | sanitytest.py | 140 |
1 files changed, 72 insertions, 68 deletions
diff --git a/sanitytest.py b/sanitytest.py index ba086e2..856b663 100644 --- a/sanitytest.py +++ b/sanitytest.py @@ -119,82 +119,85 @@ for klassname in gottypes: gotfunctions[klassname].append(name) -# Phase 3: First cut at mapping of C APIs to python classes + methods -basicklassmap = {} # type: Dict[str, Tuple[str, str, str]] - -for cname in wantfunctions: - name = cname - # Some virConnect APIs have stupid names - if name[0:7] == "virNode" and name[0:13] != "virNodeDevice": - name = "virConnect" + name[7:] - if name[0:7] == "virConn" and name[0:10] != "virConnect": - name = "virConnect" + name[7:] - - # The typed param APIs are only for internal use - if name[0:14] == "virTypedParams": - continue +# First cut at mapping of C APIs to python classes + methods +def basic_class_method_mapping(wantfunctions, gottypes): + basicklassmap = {} # type: Dict[str, Tuple[str, str, str]] + + for cname in wantfunctions: + name = cname + # Some virConnect APIs have stupid names + if name[0:7] == "virNode" and name[0:13] != "virNodeDevice": + name = "virConnect" + name[7:] + if name[0:7] == "virConn" and name[0:10] != "virConnect": + name = "virConnect" + name[7:] + + # The typed param APIs are only for internal use + if name[0:14] == "virTypedParams": + continue - if name[0:23] == "virNetworkDHCPLeaseFree": - continue + if name[0:23] == "virNetworkDHCPLeaseFree": + continue - if name[0:28] == "virDomainStatsRecordListFree": - continue + if name[0:28] == "virDomainStatsRecordListFree": + continue - if name[0:19] == "virDomainFSInfoFree": - continue + if name[0:19] == "virDomainFSInfoFree": + continue - if name[0:25] == "virDomainIOThreadInfoFree": - continue + if name[0:25] == "virDomainIOThreadInfoFree": + continue - if name[0:22] == "virDomainInterfaceFree": - continue + if name[0:22] == "virDomainInterfaceFree": + continue - if name[0:21] == "virDomainListGetStats": - name = "virConnectDomainListGetStats" + if name[0:21] == "virDomainListGetStats": + name = "virConnectDomainListGetStats" - # These aren't functions, they're callback signatures - if name in ["virConnectAuthCallbackPtr", "virConnectCloseFunc", - "virStreamSinkFunc", "virStreamSourceFunc", "virStreamEventCallback", - "virEventHandleCallback", "virEventTimeoutCallback", "virFreeCallback", - "virStreamSinkHoleFunc", "virStreamSourceHoleFunc", "virStreamSourceSkipFunc"]: - continue - if name[0:21] == "virConnectDomainEvent" and name[-8:] == "Callback": - continue - if name[0:22] == "virConnectNetworkEvent" and name[-8:] == "Callback": - continue - if (name.startswith("virConnectStoragePoolEvent") and - name.endswith("Callback")): - continue - if (name.startswith("virConnectNodeDeviceEvent") and - name.endswith("Callback")): - continue - if (name.startswith("virConnectSecretEvent") and - name.endswith("Callback")): - continue - - # virEvent APIs go into main 'libvirt' namespace not any class - if name[0:8] == "virEvent": - if name[-4:] == "Func": + # These aren't functions, they're callback signatures + if name in ["virConnectAuthCallbackPtr", "virConnectCloseFunc", + "virStreamSinkFunc", "virStreamSourceFunc", "virStreamEventCallback", + "virEventHandleCallback", "virEventTimeoutCallback", "virFreeCallback", + "virStreamSinkHoleFunc", "virStreamSourceHoleFunc", "virStreamSourceSkipFunc"]: + continue + if name[0:21] == "virConnectDomainEvent" and name[-8:] == "Callback": + continue + if name[0:22] == "virConnectNetworkEvent" and name[-8:] == "Callback": continue - basicklassmap[name] = ("libvirt", name, cname) - else: - found = False - # To start with map APIs to classes based on the - # naming prefix. Mistakes will be fixed in next - # loop - for klassname in gottypes: - klen = len(klassname) - if name[0:klen] == klassname: - found = True - if name not in basicklassmap: - basicklassmap[name] = (klassname, name[klen:], cname) - elif len(basicklassmap[name]) < klen: - basicklassmap[name] = (klassname, name[klen:], cname) - - # Anything which can't map to a class goes into the - # global namespaces - if not found: - basicklassmap[name] = ("libvirt", name[3:], cname) + if (name.startswith("virConnectStoragePoolEvent") and + name.endswith("Callback")): + continue + if (name.startswith("virConnectNodeDeviceEvent") and + name.endswith("Callback")): + continue + if (name.startswith("virConnectSecretEvent") and + name.endswith("Callback")): + continue + + # virEvent APIs go into main 'libvirt' namespace not any class + if name[0:8] == "virEvent": + if name[-4:] == "Func": + continue + basicklassmap[name] = ("libvirt", name, cname) + else: + found = False + # To start with map APIs to classes based on the + # naming prefix. Mistakes will be fixed in next + # loop + for klassname in gottypes: + klen = len(klassname) + if name[0:klen] == klassname: + found = True + if name not in basicklassmap: + basicklassmap[name] = (klassname, name[klen:], cname) + elif len(basicklassmap[name]) < klen: + basicklassmap[name] = (klassname, name[klen:], cname) + + # Anything which can't map to a class goes into the + # global namespaces + if not found: + basicklassmap[name] = ("libvirt", name[3:], cname) + + return basicklassmap # Deal with oh so many special cases in C -> python mapping @@ -376,6 +379,7 @@ def validate_c_api_bindings_present(finalklassmap): try: + basicklassmap = basic_class_method_mapping(wantfunctions, gottypes) finalklassmap = fixup_class_method_mapping(basicklassmap) usedfunctions = validate_c_to_python_api_mappings(finalklassmap, gotfunctions) validate_python_to_c_api_mappings(gotfunctions, usedfunctions) |