Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: current
    • Fix Version/s: 1.0
    • Component/s: contract
    • Labels:
      None
    • Environment:

      Operating System: All
      Platform: All

    • Issuezilla Id:
      487

      Description

      Running this against RACF takes a very long time (as much as 2 hours) because it asks for all objects to
      be fetched with all attributes repeatedly. There are a few optimizations that could be used to reduce
      this time.

      1. When the filter translates to 'null', the test should be skipped, since there is already a search with
      'null' (Line 177)
      filter all attributes (RACF does not implement filter on anything other than NAME and UID)
      coObjects = ConnectorHelper.search(getConnectorFacade(),
      getObjectClass(), fltAllAtts,
      getOperationOptionsByOp(SearchApiOp.class));

      2. All this is is a repeat of the earlier fetch all objects, I'm not sure that it's useful (Line 192)
      //check null filter
      coObjects = ConnectorHelper.search(getConnectorFacade(), getObjectClass(), null,
      getOperationOptionsByOp(SearchApiOp.class));
      assertTrue("Null-filter search failed, wrong number of objects returned, expected: "
      + (uids.size() + coBeforeTest.size()) + " but found: "
      + coObjects.size(),
      coObjects.size() == uids.size() + coBeforeTest.size());

      3. All searches would be sped up considerably if attributes were not requested. Since there is already a compareExistingObjectsByUidOnly() method, this could be used to decide not to request attributes if
      they won't be used.

        Issue Links

          Activity

          Hide
          george_hetrick added a comment -

          Point 3 above also applies to MultiOpTests.

          Show
          george_hetrick added a comment - Point 3 above also applies to MultiOpTests.
          Hide
          davidadam added a comment -

          reassigning to myself

          Show
          davidadam added a comment - reassigning to myself
          Hide
          davidadam added a comment -

          SearchApiOp with null filter returns all RETURNED_BY_DEFAULT attributes.

          Until I get a grip on this issue, the following could be done in connector schema:
          mark the resource-expensive attributes as NOT_RETURNED_BY DEFAULT.

          For instance:
          nonReturnedByDefaultAttribute = AttributeInfoBuilder.build(
          "ATTR_NAME", String.class,
          EnumSet.of(Flags.NOT_RETURNED_BY_DEFAULT));

          Show
          davidadam added a comment - SearchApiOp with null filter returns all RETURNED_BY_DEFAULT attributes. Until I get a grip on this issue, the following could be done in connector schema: mark the resource-expensive attributes as NOT_RETURNED_BY DEFAULT. For instance: nonReturnedByDefaultAttribute = AttributeInfoBuilder.build( "ATTR_NAME", String.class, EnumSet.of(Flags.NOT_RETURNED_BY_DEFAULT));
          Hide
          bfarrell added a comment -

          This issue also affects SAP. The account retrieve operation is very expensive.
          SAP provides a quicker call to retrieve all users names, so I use that for the
          null filter query. I would have to set all attributes to be not returned by
          default to avoid the account retrieval call. It makes more sense for me to be
          able to use the compareExistingObjectsByUidOnly() instead in these contract
          tests. In SAP's case, a retrieval of all users and information shouldnt be in
          the connector because we wouldnt want any consumer to actually use it.

          Show
          bfarrell added a comment - This issue also affects SAP. The account retrieve operation is very expensive. SAP provides a quicker call to retrieve all users names, so I use that for the null filter query. I would have to set all attributes to be not returned by default to avoid the account retrieval call. It makes more sense for me to be able to use the compareExistingObjectsByUidOnly() instead in these contract tests. In SAP's case, a retrieval of all users and information shouldnt be in the connector because we wouldnt want any consumer to actually use it.
          Hide
          qouyang added a comment -

          Move target_milestone from "milestone1" to "1.0"

          Show
          qouyang added a comment - Move target_milestone from "milestone1" to "1.0"

            People

            • Assignee:
              davidadam
              Reporter:
              george_hetrick
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: