text: import capnp
  import os
  import socket
  import gc
  
  import sys  # add examples dir to sys.path
  sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'examples'))
  import calculator_client
  import calculator_server
  
  
  def test_calculator():
      read, write = socket.socketpair(socket.AF_UNIX)
  
      server = capnp.TwoPartyServer(write, bootstrap=calculator_server.CalculatorImpl())
      calculator_client.main(read)
  
  
  def test_calculator_gc():
      def new_evaluate_impl(old_evaluate_impl):
          def call(*args, **kwargs):
              gc.collect()
              return old_evaluate_impl(*args, **kwargs)
          return call
  
      read, write = socket.socketpair(socket.AF_UNIX)
  
      # inject a gc.collect to the beginning of every evaluate_impl call
      evaluate_impl_orig = calculator_server.evaluate_impl
      calculator_server.evaluate_impl = new_evaluate_impl(evaluate_impl_orig)
  
      server = capnp.TwoPartyServer(write, bootstrap=calculator_server.CalculatorImpl())
      calculator_client.main(read)
  
      calculator_server.evaluate_impl = evaluate_impl_orig
  