#!/usr/bin/python-dbg

import gc
import sys
from pprint import pprint

import apt

# get initial cache
print(sys.gettotalrefcount())
progress = apt.progress.OpTextProgress()
c = apt.Cache(progress)
print("refcount after first cache instance: ", sys.gettotalrefcount())

# test open()
c.open(progress)
print("refcount after cache open: ", sys.gettotalrefcount())
# pprint(sys.getobjects(10))

c.open(apt.progress.OpProgress())
print("refcount after seconf cache open: ", sys.gettotalrefcount())
# pprint(sys.getobjects(10))

# FIXME: find a way to get a efficient diff
# before = gc.get_objects()
# c.open(apt.progress.OpProgress())
# after = gc.get_objects()


# test update()
print("refcount before cache.update(): ", sys.gettotalrefcount())
c.update()
gc.collect()
print("refcount after cache.update(): ", sys.gettotalrefcount())
c.update()
gc.collect()
print("refcount after second cache.update(): ", sys.gettotalrefcount())
# pprint(sys.getobjects(20))


# test install()
c.open(apt.progress.OpProgress())
gc.collect()
print("refcount before cache['hello'].mark_install(): ", sys.gettotalrefcount())
c["hello"].mark_install()
c.commit(apt.progress.FetchProgress(), apt.progress.InstallProgress())
gc.collect()
print("refcount after: ", sys.gettotalrefcount())
c.open(apt.progress.OpProgress())
c["hello"].mark_delete()
c.commit(apt.progress.FetchProgress(), apt.progress.InstallProgress())
gc.collect()
print("refcount after: ", sys.gettotalrefcount())
pprint(sys.getobjects(10))
