Skip to content

dalehenrich/obex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Object Explorer for GemStone/S 64

Intro

Object Explorer leverages the work of Pierre Chanson, Ben Coman, and James Foster.

Pierre Chanson developed RPointerDetective that was a Roassal2 implementation of Ben Coman's PointerDetective. Both RPointerDetective and PointerDetective produce grapical representations of the reference path from a target object to the persistent roots in a Smalltalk image.

Pierre Chanson went on to adapt RPointerDetective for visualizing reference paths for objects in a GemStone/S 64 data base, using tODE and GsDevKit_home and produced a demonstration video of the tool in action.

James Foster developed ScanBackup to efficiently produce a report of the instance count for each class in a GemStone/S 64 backup file.

Object Explorer

Object Explorer expands upon this work and provides a tool visualizing and exploring the objects in a GemStone/S 64 repository.

  1. Prerequisites

    • Use a recently updated version of the master branch of GsDevKit_home.

    • The $GS_HOME/shared/repos/tode git repo will be updated to the latest version of the dev branch during installation.

    • Roassal graphics depends upon the Cairo graphics package and needs to be installed on Linux:

      sudo apt-get install libcairo2:i386
      

      From the CairoLibraryLoader class>>cantFindCairoOnLinux method.

  2. Install Object Explorer

    • Create an Object Explorer stone

      cd $GS_HOME/shared/repos
      git clone https://github.com/dalehenrich/obex.git
      createStone -u http:https://gsdevkit.github.io/GsDevKit_home/Obex.ston -i Obex -l Obex -z $GS_HOME/shared/repos/obex/.smalltalk.ston obex_330 3.3.0
    • Create an Object Explorer client

      # Create tODE client named obex
      createClient -t pharo obex -l -v Pharo3.0 -s obex_330 -z $GS_HOME/shared/repos/obex/.smalltalk.ston
      startClient obex
  3. Log into the stone where you installed the Object Explorer and open an editor on the README from within tODE, so that you can run the examples:

    edit /sys/stone/dirs/Obex/README.md
    
  4. Take the Object Explorer for a quick spin:

    • Pointer Detective: calculate reference paths; open interactive detective view:

      obex parentsOf --st=`{(MetacelloProjectRegistration registry registrations at: 1) projectSpec}`
      obex view --detective
      
    • Class Instance Count Histogram: create and scan backup for class instance counts; open class instance count histogram:

      obex scan --backup obex.dbf.gz
      obex view --scan=20
      
    • Class Instance Count Histogram: use ojbect inventory to create data for class instance counts; open class instances count histogram:

      obex inventory
      obex view --inventory=instances limit=10
      
    • Class Bytes Count Histogram: use ojbect inventory to create data for class byte counts; open class bytes count histogram:

      obex inventory
      obex view --inventory=bytes limit=10
      
    • Class Instance Count detective

      obex instances --classes=3 --passes=0 obex.dbf.gz
      

Object Reference Paths

Class Instance Count Histogram

Class Bytes Count Histogram

Class Instance Counts based on selected set of instances

Each of the green nodes in the graph the instance count of the listed class in the image. The parent nodes of the green nodes (to the right) list the instance count of the classes that reference the instances in the child node ... and so on.

When you click on a brown node, the parent nodes (i.e., class instance counts for the instances associated with the node) is calculated and displayed,

Stay tuned for further work, as this project is still under development