./qpidTest.bash script:
#!/usr/bin/env bash

function main() {
  # Display Linux distro
  echo "Linux distro:"
  cat /etc/*release*
  echo

  # Display Linux version
  echo "Linux version:"
  cat /proc/version
  echo

  # Display Python 3 version
  echo "Python3 version:"
  python3 --version
  echo

  # Display C++ Qpid qpidd broker version
  echo "C++ Qpid qpidd broker version:"
  qpidd --version
  echo

  echo "Run of Qpid Python 3 example broker and helloworld_blocking scripts:"

  # Start and background Python 3 example Qpid broker
  python3 ~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/broker.py &
  local brokerPid=${!}

  # Allow some time for Python 3 example Qpid broker to get up and running
  sleep 1

  # Run helloworld_blocking.py (note no error, receiver.accept() performs as 
expected)
  if [[ "Hello World!" == $(python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py) 
]]; then
    echo "Completed without error"
  else
    echo "Command 'python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py' 
failed"
  fi

  # Stop background Python 3 example Qpid broker
  kill ${brokerPid}
  echo

  echo "Run of C++ Qpid qpidd broker and helloworld_blocking script:"

  # Start and background C++ Qpid qpidd broker
  qpidd &
  brokerPid=${!}

  # Allow some time for C++ Qpid qpidd broker to get up and running
  sleep 1

  # Add exchange topic 'examples'
  qpid-config add exchange topic examples '*' || {
    echo "Command 'qpid-config add exchange topic examples '*'' failed"
  }

  # Run same helloworld_blocking.py (note error, receiver.accept() fails with 
'IndexError: pop from an empty deque')
  # If 'receiver.accept()' is commented out from helloworld_blocking.py, 
command succeeds and returns 'Hello World!'
  # but message is 'leaked' and/or stored/queued awaiting acceptance
  if [[ "Hello World!" == $(python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py || 
echo "${?}") ]]; then
    echo "Completed without error"
  else
    echo "'python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py' 
failed"
  fi

  # Stop background C++ Qpid qpidd broker
  kill ${brokerPid}
}

main "${@}"

exit


./qpidTest.bash script run output:
[gmajszak@xxx-u-dev-wks20 ~]$ ./qpidTest.bash
Linux distro:
NAME="Red Hat Enterprise Linux Workstation"
VERSION="7.6 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Workstation"
VARIANT_ID="workstation"
VERSION_ID="7.6"
PRETTY_NAME="Red Hat Enterprise Linux Workstation 7.6 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.6:GA:workstation"
HOME_URL=https://www.redhat.com/
BUG_REPORT_URL=https://bugzilla.redhat.com/

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.6"
Red Hat Enterprise Linux Workstation release 7.6 (Maipo)
Red Hat Enterprise Linux Workstation release 7.6 (Maipo)
cpe:/o:redhat:enterprise_linux:7.6:ga:workstation

Linux version:
Linux version 3.10.0-1160.45.1.el7.x86_64 
(mockbu...@x86-vm-37.build.eng.bos.redhat.com<mailto:mockbu...@x86-vm-37.build.eng.bos.redhat.com>)
 (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Fri Sep 24 
10:17:16 UTC 2021

Python3 version:
Python 3.6.8

C++ Qpid qpidd broker version:
qpidd (qpid-cpp) version 1.39.0

Run of Qpid Python 3 example broker and helloworld_blocking scripts:
Completed without error

Run of C++ Qpid qpidd broker and helloworld_blocking script:
2021-10-13 15:04:53 [Broker] notice Broker (pid=4832) start-up
2021-10-13 15:04:53 [Security] notice SSL plugin not enabled, you must set 
--ssl-cert-db to enable it.
2021-10-13 15:04:53 [Store] notice Linear Store: Store module initialized; 
store-dir=/home/gmajszak/.qpidd
2021-10-13 15:04:53 [Network] notice Listening on TCP/TCP6 port 5672
./qpidTest.bash: line 3:  4827 Terminated              python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/broker.py
Traceback (most recent call last):
  File 
"/home/gmajszak/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py",
 line 32, in <module>
    receiver.accept()
  File "/usr/lib64/python3.6/site-packages/proton/_utils.py", line 248, in 
accept
    self.settle(Delivery.ACCEPTED)
  File "/usr/lib64/python3.6/site-packages/proton/_utils.py", line 283, in 
settle
    self.fetcher.settle(state)
  File "/usr/lib64/python3.6/site-packages/proton/_utils.py", line 192, in 
settle
    delivery = self.unsettled.popleft()
IndexError: pop from an empty deque
'python3 
~/Downloads/Qpid_Proton_0.35.0/Proton_Python_Examples/helloworld_blocking.py' 
failed
2021-10-13 15:04:54 [Broker] notice Broker (pid=4832) shut-down
[gmajszak@xxx-u-dev-wks20 ~]$


Reply via email to