vpp/test/test_endian.py
Paul Vinciguerra 888640a398 map gbp papi: match endianess of f64
clib_net_to_host_f64, clib_host_to_net_f64 are now implemented as '=',
https://gerrit.fd.io/r/#/c/20406/  set papi to match.
- all f64 api references are now wrapped with
  clib_net_to_host_f64 or clib_host_to_net_f64.

IEEE f64 endianess is not defined.  If clib_net_to_host_f64 and
clib_host_to_net_f64 are later defined in VPP as big-endian, it is
a single character change in the papi vpp_serializer.

Note: This breaks the api in a manner that would not be detected by
the flag day initiative.  The scope is small.  This only impacts map.api,
which applied the u64 transformation, while the gbp api uses '='.

The implementation of "=" raises issues for the papi socket implementation
if used between systems of differing endianess.  See Vratko's comments.

- Added get_f64_endian_value() to api to allow client to verify endianess of f64's.

Type: fix
Depends-on: https://gerrit.fd.io/r/#/c/20484/

Change-Id: I00fc64a6557ba0190398df211aa0ea5c7eb101df
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-08 17:47:33 +00:00

39 lines
1.5 KiB
Python

# Copyright (c) 2019. Vinci Consulting Corp. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import framework
import vpp_papi_provider
F64_ONE = 1.0
class TestEndian(framework.VppTestCase):
"""TestEndian"""
def test_f64_endian_value(self):
try:
rv = self.vapi.get_f64_endian_value(f64_one=F64_ONE)
self.assertEqual(rv.f64_one_result, F64_ONE,
"client incorrectly deserializes f64 values. "
"Expected: %r. Received: %r." % (
F64_ONE, rv.f64_one_result))
except vpp_papi_provider.UnexpectedApiReturnValueError:
self.fail('client incorrectly serializes f64 values.')
def test_get_f64_increment_by_one(self):
expected = 43.0
rv = self.vapi.get_f64_increment_by_one(f64_value=42.0)
self.assertEqual(rv.f64_value, expected, 'Expected %r, received:%r.'
% (expected, rv.f64_value))