Commit 0f29c046 authored by Greg Williams's avatar Greg Williams
Browse files

Implemented DELETE

parent 2d81e7ac
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ $(KINETIC_LIB): $(LIB_OBJS)
	ar -rcs $@ $(LIB_OBJS)
	ar -t $@

UTIL_OBJS = $(OUT_DIR)/noop.o $(OUT_DIR)/put.o $(OUT_DIR)/get.o
UTIL_OBJS = $(OUT_DIR)/noop.o $(OUT_DIR)/put.o $(OUT_DIR)/get.o $(OUT_DIR)/delete.o
UTIL_INCS = -I/usr/local/include -I$(UTIL_DIR)
# TODO: Delete LIB_DIR dep after kinetic_proto is yanked out of public API
LDFLAGS += -lm -l kinetic-c-client -l crypto -l ssl
@@ -83,6 +83,8 @@ $(OUT_DIR)/put.o: $(UTIL_EX)/put.c
	$(CC) -c -o $@ $< $(CFLAGS) $(UTIL_INCS)
$(OUT_DIR)/get.o: $(UTIL_EX)/get.c
	$(CC) -c -o $@ $< $(CFLAGS) $(UTIL_INCS)
$(OUT_DIR)/delete.o: $(UTIL_EX)/delete.c
	$(CC) -c -o $@ $< $(CFLAGS) $(UTIL_INCS)
$(UTIL_EXEC): $(UTIL_DIR)/main.c $(UTIL_OBJS)
	${CC} -o $@ $< $(UTIL_OBJS) $(UTIL_INCS) ${CFLAGS} ${LDFLAGS}

@@ -96,6 +98,7 @@ SIM_RUNNER = com.seagate.kinetic.simulator.internal.SimulatorRunner
SIM_ADMIN = com.seagate.kinetic.admin.cli.KineticAdminCLI

run: ${UTIL_EXEC}
	sleep 2
	echo Running Executable ${UTIL_EXEC}:
	exec java -classpath "${CLASSPATH}" ${SIM_RUNNER} "$@" & > ./sim.log
	sleep 5
@@ -103,6 +106,7 @@ run: ${UTIL_EXEC}
	${UTIL_EXEC} noop
	${UTIL_EXEC} put
	${UTIL_EXEC} get
	${UTIL_EXEC} delete

all: clean test default install run

+5 −0
Original line number Diff line number Diff line
@@ -38,6 +38,11 @@ Getting Started
    > make
    > sudo make install

**You can all clean and uninstall old versions**

    > make clean
    > sudo uninstall

**Build example utility and run tests against Kinetic Device simulator**

    > make run
+10 −0
Original line number Diff line number Diff line
@@ -322,6 +322,7 @@ namespace :tests do
    'tests:utility:noop',
    'tests:utility:put',
    'tests:utility:get',
    'tests:utility:delete',
  ]

  namespace :utility do
@@ -361,6 +362,15 @@ namespace :tests do
      end
    end

    task :delete => ['release', 'ruby_sim:shutdown'] do
      java_sim_erase_drive
      with_test_server("Testing Get operation") do
        execute_command "./kinetic-c put"
        execute_command "./kinetic-c get"
        execute_command "./kinetic-c delete"
      end
    end

  end

end
+15 −2
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ KineticOperation KineticClient_CreateOperation(
KineticStatus KineticClient_NoOp(KineticOperation* operation);

/**
 * @brief Executes a PUT command to write data to the Kinetic Device
 * @brief Executes a PUT command to store/update an entry on the Kinetic Device
 *
 * @param operation     KineticOperation instance to use for the operation
 * @param metadata      Key/value metadata for object to store. 'value' must
@@ -96,7 +96,7 @@ KineticStatus KineticClient_Put(KineticOperation* operation,
    const KineticKeyValue* metadata);

/**
 * @brief Executes a GET command to read data from the Kinetic Device
 * @brief Executes a GET command to retrieve and entry from the Kinetic Device
 *
 * @param operation     KineticOperation instance to use for the operation
 * @param metadata      Key/value metadata for object to retrieve. 'value' will
@@ -108,4 +108,17 @@ KineticStatus KineticClient_Put(KineticOperation* operation,
KineticStatus KineticClient_Get(KineticOperation* operation,
    KineticKeyValue* metadata);

/**
 * @brief Executes a DELETE command to delete an entry from the Kinetic Device
 *
 * @param operation     KineticOperation instance to use for the operation
 * @param metadata      Key/value metadata for object to delete. 'value' is
 *                      not used for this operation.
 *
 * @return              Returns 0 upon succes, -1 or the Kinetic status code
 *                      upon failure
 */
KineticStatus KineticClient_Delete(KineticOperation* operation,
    KineticKeyValue* metadata);

#endif // _KINETIC_CLIENT_H
+23 −0
Original line number Diff line number Diff line
@@ -193,6 +193,29 @@ KineticStatus KineticClient_Get(KineticOperation* operation,
    return status;
}

KineticStatus KineticClient_Delete(KineticOperation* operation,
    KineticKeyValue* metadata)
{
    assert(operation->connection != NULL);
    assert(operation->request != NULL);
    assert(operation->response != NULL);
    assert(metadata != NULL);
    assert(metadata->key.data != NULL);
    assert(metadata->key.len > 0);

    // Initialize request
    KineticOperation_BuildDelete(operation, metadata);

    // Execute the operation
    KineticStatus status = KineticClient_ExecuteOperation(operation);

    // Zero out value length for all DELETE operations
    operation->response->value.len = 0;
    metadata->value.len = 0;

    return status;
}

KineticStatus KineticClient_ExecuteOperation(KineticOperation* operation)
{
    KineticStatus status = KINETIC_STATUS_INVALID;
Loading