Skip to content

Instantly share code, notes, and snippets.

@rm-you
Last active March 10, 2017 02:33
Show Gist options
  • Save rm-you/1e0ee979774c4d7117a7063eb39ed23b to your computer and use it in GitHub Desktop.
Save rm-you/1e0ee979774c4d7117a7063eb39ed23b to your computer and use it in GitHub Desktop.
lock_session = db_api.get_session(autocommit=False)
print("Initial: {}".format(lock_session.query(db_models.LoadBalancer).all()))
self.repos.create_load_balancer_and_vip(lock_session, lb_dict, vip_dict)
print("Create 1: {}".format(lock_session.query(db_models.LoadBalancer).all()))
lock_session.rollback()
print("Rollback: {}".format(lock_session.query(db_models.LoadBalancer).all()))
self.repos.create_load_balancer_and_vip(lock_session, lb_dict, vip_dict)
print("Create 2: {}".format(lock_session.query(db_models.LoadBalancer).all()))
lock_session.rollback()
print("Rollback: {}".format(lock_session.query(db_models.LoadBalancer).all()))
quotas = lock_session.query(db_models.Quotas).filter_by(project_id=lb_dict['project_id']).with_for_update().first()
print("Queried: {}".format(lock_session.query(db_models.LoadBalancer).all()))
self.repos.create_load_balancer_and_vip(lock_session, lb_dict, vip_dict)
print("Create 3: {}".format(lock_session.query(db_models.LoadBalancer).all()))
lock_session.rollback()
print("Rollback: {}".format(lock_session.query(db_models.LoadBalancer).all()))
self.repos.check_quota_met(self.session, lock_session, models.Listener,lb_dict['project_id'])
print("CQM Ran: {}".format(lock_session.query(db_models.LoadBalancer).all()))
self.repos.create_load_balancer_and_vip(lock_session, lb_dict, vip_dict)
print("Create 4: {}".format(lock_session.query(db_models.LoadBalancer).all()))
lock_session.rollback()
print("Rollback: {}".format(lock_session.query(db_models.LoadBalancer).all()))
@rm-you
Copy link
Author

rm-you commented Mar 10, 2017

Initial: []
Create 1: [<octavia.db.models.LoadBalancer object at 0x10de9ed10>]
Rollback: []
Create 2: [<octavia.db.models.LoadBalancer object at 0x10de9ee10>]
Rollback: []
Queried: []
Create 3: [<octavia.db.models.LoadBalancer object at 0x10deb1510>]
Rollback: []
CQM Ran: []
Create 4: [<octavia.db.models.LoadBalancer object at 0x10dea2e90>]
Rollback: [<octavia.db.models.LoadBalancer object at 0x10deef910>]

@rm-you
Copy link
Author

rm-you commented Mar 10, 2017

    def test_broken_session(self):
        from octavia.db import models as db_models
        project_id = uuidutils.generate_uuid()
        vip_dict = {'ip_address': '10.0.0.1', 'port_id': uuidutils.generate_uuid(),
                    'subnet_id': uuidutils.generate_uuid()}
        lb_dict = {'name': 'lb1', 'description': 'desc1', 'enabled': True,
                   'topology': constants.TOPOLOGY_ACTIVE_STANDBY,
                   'vrrp_group': None, 'server_group_id': uuidutils.generate_uuid(),
                   'project_id': project_id,
                   'provisioning_status': constants.PENDING_CREATE,
                   'operating_status': constants.ONLINE,
                   'id': uuidutils.generate_uuid()}

        session = db_api.get_session()
        lock_session = db_api.get_session(autocommit=False)
        print("Initial:  {}".format(lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()))
        self.repos.create_load_balancer_and_vip(lock_session, lb_dict, vip_dict)
        print("Create 1: {}".format(lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()))
        lock_session.rollback()
        print("Rollback: {}".format(lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()))
        self.repos.create_load_balancer_and_vip(lock_session, lb_dict, vip_dict)
        print("Create 2: {}".format(lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()))
        lock_session.rollback()
        print("Rollback: {}".format(lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()))
        lb_count = session.query(db_models.LoadBalancer).filter(
            db_models.LoadBalancer.project_id == project_id).all()
        print("Counted:  {}".format(lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()))
        self.repos.create_load_balancer_and_vip(lock_session, lb_dict, vip_dict)
        print("Create 4: {}".format(lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()))
        lock_session.rollback()
        lbs = lock_session.query(db_models.LoadBalancer).filter_by(project_id=project_id).all()
        print("Rollback: {}".format(lbs))
        self.assertEqual(0, len(lbs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment