Notes: FullBlownTestFilePageMgrImpl needs the comment marks taken away from the calls to FileMap.VerifyNoneRegistered and DummyFileMapPrivate changed to FileMapPrivate as soon as FileMap gets up to speed.
later note: actually calling an enumeration routine in FileMap will perform the function of VerifyNoneRegistered; FileMap.VerifyNoneRegistered no longer exists.
note:  Only FullBlownTestFilePageMgrImpl has the needed mods to call FileMap.InitializeFileMap.


There are six test sets for FilePageMgr:  3 showing known anomalies, two tests to get timings for lots of operations, and one test to test integrity in the presence of overlapping processes.  These test sets and various supporting utilities are specified by FilePageMgrTests.df.

Each of the tests sets expects an input file containing a set of FileIDs for its "data" files.  Except for Anomalies>CreateFile and FullBlownTest, this set of IDs points to specially preallocated disk-contiguous files;  Anomalies>CreateFile and FullBlownTest use a different set of IDs, as they delete and create files and this would waste the contiguous files.  The IDs for Anomalies>CreateFile and FullBlownTest are expected to be in noFilesFiles.IDs, the others are in ContiguousFilesFiles.IDs.  The IDs are obtained from the output of various utility programs:  runs of CreateAlpineFile followed by GetFileIDs produces output for ContiguousFilesFiles.IDs;  MakeFileIDs produces output for noFilesFiles.IDs;  some hand editing is necessary, see the descriptions below for more details.  Do not port the "data" files or uids from machine to machine, or across erases, obviously.  To delete "data" files at the end of all testing, set a breakpoint in any test set after the cleanup routine.  DO NOT attempt to delete or rename these "data" files in any other fashion because that will likely die, due to the lack of a Pilot leader page.

Each of the tests sets except FullBlownTest expects an input parameter file named <something>.Params, which specifies no. of files, no. of chunks in caches normal, log, leader.  FullBlownTest also expects <something>.Params, but it contains more info (see the source).

Each of the tests sets appends to an output file <something>.results, so you may wish to delete these result files to start with.



Anomalies>CreateFile>:
    What: show the anomaly connected with CreateFile timing.
    Input files: noFilesFiles.IDs, AnomaliesCreateFile.Params
    Output files: AnomaliesCreateFile.Results.
    How: Set up a correct file noFilesFiles.IDs, if necessary, by copying
      MakeFileIDs.Results (See Utilities>MakeFileIDs> below, for directions on
      how to create MakeFileIDs.Results for at least the number of IDs specified
      by AnomaliesCreateFile.Params) and inserting in the front of it the number
      of ids it specifies.  Then Run CreateTestFilePageMgrImpls,
      then ← CreateTestFilePageMgrImpl.Main[].

Anomalies>ReadAheadDelay> -- show the anomaly connected with ReadAhead and delays.
    Input files: ContiguousFilesFiles.IDs, AnomaliesReadAhead.Params
    Output files: AnomaliesReadAhead.Results.
    How: set up a correct file ContiguousFilesFiles.IDs, if necessary, by copying
      GetFileIDs.Results (See Utilities>GetFileIDs> below, for directions on
      how to create GetFileIDs.Results for at least the number of IDs specified
      by AnomaliesReadAhead.Params) and inserting in the front of it the number
      of ids it specifies.  As a historical artifact, this test expects to be fed
      at least 5 files, and only tests the 5th (index = 4) one, which must have a
      size of 500 pages or an error will be returned.  Then Run
      ReadAheadTestFilePageMgrImpls, then ← ReadAheadTestFilePageMgrImpl.Main[].

Anomalies>WriteBehind> -- show that WriteBehind needs help.
    Input files: ContiguousFilesFiles.IDs, AnomaliesWriteBehind.Params
    Output files: AnomaliesWriteBehind.Results.
    How: set up a correct file ContiguousFilesFiles.IDs (see description in
      Anomalies>ReadAheadDelay). As a historical artifact, this test expects to
      be fed at least 6 files, and only tests the 6th (index = 5) one, which must
      have a size of 1000 pages or an error will be returned.  Then Run
      WriteBehindTestFilePageMgrImpls, then ←
      WriteBehindTestFilePageMgrImpl.Main[].

TimingTest> -- gets lots of timing information.
    Input files: ContiguousFilesFiles.IDs, TimingTest.Params
    Output files: TimingTest.Results.
    How: set up a correct file ContiguousFilesFiles.IDs (see description in
      Anomalies>ReadAheadDelay).  Then Run TimingTestFilePageMgrImpls, then ←
      TimingTestFilePageMgrImpl.Main[].

TimingTest2> -- gets lots of timing information.
    Input files: ContiguousFilesFiles.IDs, TimingTest2.Params
    Output files: TimingTest2.Results.
    How: set up a correct file ContiguousFilesFiles.IDs (see description in
      Anomalies>ReadAheadDelay).  Then Run TimingTestFilePageMgrImpls2, then ←
      TimingTestFilePageMgrImpl2.Main[].

FullBlownTest> -- test integrity with multiple things going on.
    Input files: noFilesFiles.IDs, FullBlownTest.Params
    Output files: FullBlownTest.Results.
    How: set up a correct file noFilesFiles.IDs (see description in
      Anomalies>CreateFile).  Then Run FullBlownTestFilePageMgrImpls, then ←
      FullBlownTestFilePageMgrImpl.Main[].


Utilities>CreateAlpineFile>:
    What: makes a file named Alpinexx.DontDeleteMe (where xx is an integer <= 2000
      supplied interactively) that is contiguous on the disk and is the
      interactively specified number of pages [1..16384] long.  Don't attempt to
      delete, etc. such a file thru the UserExec, as it lacks a leader page and
      will cause a crash.  Typical file sizes used are 1, 5, 100, 200,
      500, 1000 pages, in that order.
    Input files: none.
    Output files: see "What."
    How: Run CreateAlpineFileImpl.  Then Main and answer its questions.
Utilities>DummyFileMap>:
    What: a tiny implementation mimicing FileMap.
Utilities>GetFileIDs>:
    What: given filenames, find their uids.
    Input files: none.
    Output files: GetFileIDs.Results.
    How: edit the filenames into the source.  Run GetFileIDsImpl, then ←
      GetFileIDsImpl.Main[].
Utilities>MakeFileIDs>:
    What: generate 50 uids for our use.  the files "belonging" to these uids are
      not created.
    Input files: none.
    Output files: MakeFileIDs.Results.
    How: Run MakeFileIDsImpls, then ← MakeFileIDsImpl.Main[].  (Edit the source
      if you want other than 50 uids.)
Utilities>PerfStats>:
    What: my modified copy of Mark's perf stats, with a more condensed output
      and some twiddles.
Utilities>Delay>:
    What: find out about forced delays, so we know our test programs are doing
      them correctly.  Probably don't need this any more, but just in case.....
    Input files: none.
    Output files: Delay.Results
    How: Run DelayImpl, then ← DelayImpl.Main[].
Utilities>AlpineZonesStub>:
    What: stub to create static zone.