code: def test_cull_size(self):
      self.db = (
          self.create_db()
      )  # skip the load-records init from setUp
      self.db.size_limit = 1000
      self.db.cull_fraction = 0.2
      self.load_records(100, buffer_size=10)
      assert len(self.db.get_history()) == 100
      self.load_records(1, buffer_size=0)
      assert len(self.db.get_history()) == 101
      self.load_records(1, buffer_size=1)
      # 0.2 * 100 = 20, 101 - 20 = 81
      assert len(self.db.get_history()) == 81
  
imports: import logging
  import os
  import tempfile
  import time
  from datetime import datetime, timedelta
  from unittest import TestCase
  import pytest
  from jupyter_client.session import Session
  from ipyparallel import util
  from ipyparallel.controller.dictdb import DictDB
  from ipyparallel.controller.hub import init_record
  from ipyparallel.controller.sqlitedb import SQLiteDB
  from ipyparallel.util import utc
label_desc: Use image node_id 3 for calling the TestDictBackend obj's underlying member method code with example usage: obj.test_cull_size() without return types