Question: Conflict - Serializable Write a function, named is _ conflict _ serializable that takes a schedule ( see previous problem ) , and returns true

Conflict-Serializable
Write a function, named is_conflict_serializable that takes a schedule (see previous problem), and returns true if the schedule is conflict-serializable.
test cases:
import sqlite3
import unittest
from pprint import pprint
import sys
import os
sys.path.append("/home/codio/workspace/student_code/")
from conflict_serializable import is_conflict_serializable
class Action:
def __init__(self, object_, transaction, is_write):
self.object_= object_
self.transaction = transaction
self.is_write = is_write
def __str__(self):
return f"Action({self.object_},{self.transaction},{self.is_write})"
__repr__=__str__
class TestConflictSerializable(unittest.TestCase):
def test_visible_1(self):
actions =[
Action(object_="A", transaction="T2", is_write=False),
Action(object_="B", transaction="T1", is_write=False),
Action(object_="A", transaction="T2", is_write=True),
Action(object_="A", transaction="T3", is_write=False),
Action(object_="B", transaction="T1", is_write=True),
Action(object_="A", transaction="T3", is_write=True),
Action(object_="B", transaction="T2", is_write=False),
Action(object_="B", transaction="T2", is_write=True),
]
print("Actions:")
pprint(actions)
result = is_conflict_serializable(actions)
print(f"Result ={result}")
expected = True
print(f"Expected ={expected}")
assert expected == result
def test_visible_2(self):
actions =[
Action(object_="A", transaction="T2", is_write=False),
Action(object_="B", transaction="T1", is_write=False),
Action(object_="A", transaction="T2", is_write=True),
Action(object_="A", transaction="T3", is_write=False),
Action(object_="B", transaction="T1", is_write=True),
Action(object_="A", transaction="T3", is_write=True),
Action(object_="B", transaction="T2", is_write=False),
Action(object_="B", transaction="T1", is_write=True),
Action(object_="B", transaction="T2", is_write=True),
]
print("Actions:")
pprint(actions)
result = is_conflict_serializable(actions)
print(f"Result ={result}")
expected = False
print(f"Expected ={expected}")
assert expected == result
def test_hidden(self):
actions =[
Action(object_="A", transaction="T2", is_write=False),
Action(object_="B", transaction="T1", is_write=False),
Action(object_="A", transaction="T2", is_write=True),
Action(object_="A", transaction="T3", is_write=False),
Action(object_="B", transaction="T1", is_write=True),
Action(object_="A", transaction="T3", is_write=True),
Action(object_="B", transaction="T2", is_write=False),
Action(object_="B", transaction="T1", is_write=False),
Action(object_="B", transaction="T2", is_write=True),
]
assert is_conflict_serializable(actions)
actions =[
Action(object_="A", transaction="T2", is_write=False),
Action(object_="B", transaction="T1", is_write=False),
Action(object_="A", transaction="T3", is_write=False),
Action(object_="A", transaction="T2", is_write=True),
Action(object_="A", transaction="T3", is_write=False),
Action(object_="B", transaction="T1", is_write=True),
Action(object_="A", transaction="T3", is_write=True),
Action(object_="B", transaction="T2", is_write=False),
Action(object_="B", transaction="T1", is_write=False),
Action(object_="B", transaction="T2", is_write=True),
]
assert not is_conflict_serializable(actions)
if __name__=='__main__':
unittest.main()

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!