=========================
Evolution to generation 2
=========================

Remove all indexes and int ids utility.

  >>> from zope.component import hooks

Let's open the original generation 0 database:

  >>> db = getDB('tests/generation-1.fs')
  >>> site = getRootFolder(db)
  >>> oldSite = hooks.getSite()
  >>> hooks.setSite(site)


Conditions
----------

Let's get the site and test the existing storage

  >>> sm = site.getSiteManager()

  >>> idx = sm['default']['package.packageText']
  >>> idx
  <z3c.indexer.index.TextIndex object at ...>

  >>> idx = sm['default']['package.isPublished']
  >>> idx
  <z3c.indexer.index.ValueIndex object at ...>

  >>> idx = sm['default']['package.releaseText']
  >>> idx
  <z3c.indexer.index.TextIndex object at ...>

  >>> idx = sm['default']['package.releaseClassifiers']
  >>> idx
  <z3c.indexer.index.TextIndex object at ...>

  >>> idx = sm['default']['release.fullText']
  >>> idx
  <z3c.indexer.index.TextIndex object at ...>

  >>> idx = sm['default']['user.fullText']
  >>> idx
  <z3c.indexer.index.TextIndex object at ...>

  >>> idx = sm['default']['historyEntry.fullText']
  >>> idx
  <z3c.indexer.index.TextIndex object at ...>

  >>> idx = sm['default']['errorEntry.fullText']
  >>> idx
  <z3c.indexer.index.TextIndex object at ...>

  >>> util = sm['default']['IntIds' ]
  >>> util
  <zope.intid.IntIds object at ...>


Test remote processor:

  >>> site._jobs
  <BTrees.OOBTree.OOBTree object at ...>

  >>> site._processor
  <BTrees.IOBTree.IOBTree object at ...>

  >>> site._queue
  <zc.queue._queue.BucketQueue object at ...>

  >>> site._scheduler
  <p01.remote.scheduler.Scheduler object at ...>


Evolve
------

Let's now evolve to generation 2:

  >>> from mypypi.generations.testing import ContextStub
  >>> context = ContextStub(site, db)
  >>> from mypypi.generations.evolve2 import evolve
  >>> evolve(context)


Test
----

Check if the indexes and intid util got removed:

  >>> sm = site.getSiteManager()

  >>> idx = sm['default']['package.packageText']

  >>> idx = sm['default']['package.isPublished']

  >>> idx = sm['default']['package.releaseText']

  >>> idx = sm['default']['package.releaseClassifiers']

  >>> idx = sm['default']['release.fullText']

  >>> idx = sm['default']['user.fullText']

  >>> idx = sm['default']['historyEntry.fullText']

  >>> idx = sm['default']['errorEntry.fullText']

  >>> util = sm['default']['IntIds' ]

Check remote processor:

  >>> site._jobs

  >>> site._processor

  >>> site._queue

  >>> site._scheduler


Cleanup
-------

  >>> hooks.setSite(oldSite)
  >>> db.close()

